; TestController must be restarted before any changes in this file will be used.
; Manual is here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html
; Revision 1.7.8	3 Jul 2025

#notes Charger must run firmware V3.0.38 or newer for this definition to interface with it.	
Latest firmware and definition files can be downloaded from the link below.
https://enovapura.com/firmware-evolution-gyrfalcon-s8000/
	

#author HKJ, WFJ
#idString ENOVA TECHNOLOGY,GYRFALCON S8000
#name ENOVA GYRFALCON S8000
#handle S8000
#port comFixedBaud
#baudrate 115200
#driver SCPIx

#value C1_Voltage V D3
#value C1_Current A D3
#value C1_Capacity Ah D3
#value C1_Energy Wh D3

#value C2_Voltage V D3
#value C2_Current A D3
#value C2_Capacity Ah D3
#value C2_Energy Wh D3

#value C3_Voltage V D3
#value C3_Current A D3
#value C3_Capacity Ah D3
#value C3_Energy Wh D3

#value C4_Voltage V D3
#value C4_Current A D3
#value C4_Capacity Ah D3
#value C4_Energy Wh D3


; How to poll for data, this is used for table and #values?
; a #askMode, #cmdMode and #prepareSample is used before this is string is used.
; Number of returned values must match number of columns defined with #value (allowing for selector use)
; This is a single line command
#askValues MEASure:ALL? 1,2,3,4

; Format of answer: s=SI f=float, u=remove trailing letters, x=skip, *=Zero upper case values if this value is 0
;This line can be used to remove channel numbers if enabled
#askValuesReadFormat ffffffffffffffff

; Accept this delay when reading values (seconds)
#readingDelay 5

; Prepare the meter to response to #askValues
;#prepareSample 

; Initial commands to meter when establishing connection, used to disable local control
; commented out as turning this on locks the front panel controls, and we dont need to use it !
#initCmd channel Error 

; Final command to meter before breaking connection, used to restore local control - Doesnt seem to work well on the ET4xxx, leaves it in REMOTE mode!
;#finalCmd 

; This type will specify the handle name for the first device with this type
; This makes it possible to easy get generic handle names for a setup, that will work with a script
#interfaceType Charger Charger:2 Charger:3 Charger:4
#interface readVoltage   0 4 8 12
#interface readCurrent   1 5 9 13
#interface readCapacity  2 6 10 14
#interface readEnergy     3 7 11 15

;Create a variable to store channel number in, this works as a SCPI command and can be set from a combobox
#scpiCmd channel none
:setvar: selectedChannel=inputValue

;This SCPI function can be used to check the selected channel
#scpiCmd channel? none?
:readmath: selectedChannel

#scpiCmd Preprocess tx CONTrol:PROGram:PREProcess (selectedChannel)
#scpiCmd Preprocess? txrx? CONTrol:PROGram:PREProcess? (selectedChannel)

#scpiCmd SerialNo tx PROGram:SERIalno (selectedChannel),(value)
#scpiCmd SerialNo? txrx? PROGram:SERIalno? (selectedChannel)
:readmath: getElement("0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,temp",listIndex(value,"0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 255"));

#scpiCmd Type tx PROGram:TYPE (selectedChannel),(value)
#scpiCmd Type? txrx? PROGram:TYPE? (selectedChannel)
:readmath: getElement("Ni,Li,LF,Li430,Li435,LD",value-1); 

#scpiCmd Task tx PROGram:TASK (selectedChannel),(value)
#scpiCmd Task? txrx? PROGram:TASK? (selectedChannel)
:readmath: getElement("C,D,Cy,Br,Re,St",value-1);

#scpiCmd CycleMode tx PROGram:CYCLe:MODE (selectedChannel),(value)
#scpiCmd CycleMode? txrx? PROGram:CYCLe:MODE? (selectedChannel)
:readmath: getElement("CDC,DCD,DC,CD",value-1);

#scpiCmd CycleCounts tx PROGram:CYCLe:COUNts (selectedChannel),(value)
#scpiCmd CycleCounts? txrx? PROGram:CYCLe:COUNts? (selectedChannel)

#scpiCmd Prechargetofastcharge tx PROGram:VOLTage:PREChargetofastcharge (selectedChannel),(value)V
#scpiCmd Prechargetofastcharge? txrx? PROGram:VOLTage:PREChargetofastcharge? (selectedChannel)
:readmath: (value/1000.0)

#scpiCmd PrechargeCurrent tx PROGram:CURRent:PRECharge (selectedChannel),(value)A
#scpiCmd PrechargeCurrent? txrx? PROGram:CURRent:PRECharge? (selectedChannel)
:readmath: (value/1000.0)

#scpiCmd ChargeCurrent tx PROGram:CURRent:CHARge (selectedChannel),(value)A
#scpiCmd ChargeCurrent? txrx? PROGram:CURRent:CHARge? (selectedChannel)
:readmath: (value/1000.0)

#scpiCmd EndChargeCurrent tx PROGram:CURRent:TERMination (selectedChannel),(value)A
#scpiCmd EndChargeCurrent? txrx? PROGram:CURRent:TERMination? (selectedChannel)
:readmath: (value/1000.0)

#scpiCmd EndChargeVoltage tx PROGram:VOLTage:TERMination  (selectedChannel),(value)V
#scpiCmd EndChargeVoltage? txrx? PROGram:VOLTage:TERMination? (selectedChannel)
:readmath: (value/1000.0)

#scpiCmd TargetVoltage tx PROGram:VOLTage:TARGet  (selectedChannel),(value)V
#scpiCmd TargetVoltage? txrx? PROGram:VOLTage:TARGet? (selectedChannel)
:readmath: (value/1000.0)

#scpiCmd DeltaPeak tx PROGram:DELTaPeak  (selectedChannel),(value)mV
#scpiCmd DeltaPeak? txrx? PROGram:DELTaPeak? (selectedChannel)

#scpiCmd DischargeCurrent tx PROGram:CURRent:DISCharge  (selectedChannel),(value)A
#scpiCmd DischargeCurrent? txrx? PROGram:CURRent:DISCharge? (selectedChannel)
:readmath: (value/1000.0)

#scpiCmd DischargeReduceCurrent tx PROGram:CURRent:DISCharge:REDUce  (selectedChannel),(value)A
#scpiCmd DischargeReduceCurrent? txrx? PROGram:CURRent:DISCharge:REDUce? (selectedChannel)
:readmath: (value/1000.0)

#scpiCmd DischargeCutVoltage tx PROGram:VOLTage:CUT  (selectedChannel),(value)V
#scpiCmd DischargeCutVoltage? txrx? PROGram:VOLTage:CUT? (selectedChannel)
:readmath: (value/1000.0)

#scpiCmd RestartVoltage tx PROGram:VOLTage:RESTart  (selectedChannel),(value)V
#scpiCmd RestartVoltage? txrx? PROGram:VOLTage:RESTart? (selectedChannel)
:readmath: (value/1000.0)

#scpiCmd MaxCapacity tx PROGram:CAPAcity  (selectedChannel),(value)Ah
#scpiCmd MaxCapacity? txrx? PROGram:CAPAcity? (selectedChannel)
:readmath: (value/1000.0)

#scpiCmd MaxPreChargeTime tx PROGram:TIME:PRECharge  (selectedChannel),(value)Min
#scpiCmd MaxPreChargeTime? txrx? PROGram:TIME:PRECharge? (selectedChannel)

#scpiCmd MaxChargeTime tx PROGram:TIME:CHARge  (selectedChannel),(value)Min
#scpiCmd MaxChargeTime? txrx? PROGram:TIME:CHARge? (selectedChannel)

#scpiCmd MaxDischargeTime tx PROGram:TIME:CUT  (selectedChannel),(value)Min
#scpiCmd MaxDischargeTime? txrx? PROGram:TIME:CUT? (selectedChannel)

#scpiCmd ChargeRestingTime tx PROGram:TIME:RESTing:CHARge  (selectedChannel),(value)Min
#scpiCmd ChargeRestingTime? txrx? PROGram:TIME:RESTing:CHARge? (selectedChannel)

#scpiCmd DischargeRestingTime tx PROGram:TIME:RESTing:DISCharge  (selectedChannel),(value)Min
#scpiCmd DischargeRestingTime? txrx? PROGram:TIME:RESTing:DISCharge? (selectedChannel)

#scpiCmd LongName tx PROGram:LONGName  (selectedChannel),"(value)"
#scpiCmd LongName? txrx? PROGram:LONGName? (selectedChannel)

#scpiCmd ShortName tx PROGram:SHORtName  (selectedChannel),"(value)"
#scpiCmd ShortName? txrx? PROGram:SHORtName? (selectedChannel)

#scpiCmd SaveCurrentProgram tx CONTrol:PROGram:SAVE  (selectedChannel)
#scpiCmd ExitProgramConfiguration tx CONTrol:PROGram:COMPleted  (selectedChannel)
#scpiCmd SelectAProgramToConfigure tx PROGram:SETUp (selectedChannel),(value)

*****************************************************************
;Global Settings
;*****************************************************************
#cmdSetup color - Global_Settings
(144,238,144)

#cmdSetup buttonsOn Fans Global_Settings
:write: CONFig:FANS:ENABle #; [100]
:read: CONFig:FANS:ENABle?;
;:readmath: getElement("OFF,ON", listIndex(value, "0 1"));
:readmath: getElement("OFF,ON", value );
:tip: Toggle the fans On or Off
:string:
Off OFF
On ON
:update: Global_Settings.Fans_Status

;#cmdSetup indicatornum Fans_Status Global_Settings
;:read: CONFig:FANS:ENABle?
;:tip: Shows the status of the fans
;Off 0 green
;On 1 red

;#cmdSetup separator - Global_Settings
;2 100 Sunken

#cmdSetup buttonsOn Button_Beeper Global_Settings
:write: CONFig:BEEPer:KEY:ENABle #; [100]
:read:CONFig:BEEPer:KEY:ENABle?;
:readmath: getElement("OFF,ON", value );
:tip: Toggle the key beeper On or Off
:string:
Off OFF
On ON

#cmdSetup buttonsOn Process_Completion_Beeper Global_Settings
:write: CONFig:BEEPer:PROCesscompletion:ENABle #; [100]
:read:CONFig:BEEPer:PROCesscompletion:ENABle?;
:readmath: getElement("OFF,ON", value );
:tip: Toggle the Process completion beeper On or Off
:string:
Off OFF
On ON

#cmdSetup buttonsOn Process_Completion_Screen_Flash Global_Settings
:write: CONFig:SCREenflash:ENABle #; [100]
:read:CONFig:SCREenflash:ENABle?;
:readmath: getElement("NO,YES", value );
:tip: Toggle the Process completion beeper On or Off
:string:
No NO
Yes YES

;#cmdSetup indicatornum Button_Beeper_Status Global_Settings
;:read: CONFig:BEEPer:KEY:ENABle?
;:tip: Shows the status of the key beeper
;Off 0 green
;On 1 red

;#cmdSetup separator - Global_Settings
;2 100 Sunken

#cmdSetup buttonsOn LiIon&LifePO4_Strong_Protect Global_Settings
:read: CONFig:LISPfn:ENABle?
:readmath: getElement("OFF ON",value);
:write: CONFig:LISPfn:ENABle #; [100]
:tip: Charging won't start for liion batteries below 2V when LISP is enabled.
:string:   
Off OFF
On ON
:update: Global_Settings.LiIon&LifePO4_Strong_Protect_Status 

;#cmdSetup indicatornum LiIon&LifePO4_Strong_Protect_Status Global_Settings
;:read: CONFig:LISPfn:ENABle?
;:tip: Shows the status of the LISP
;Off 0 green
;On 1 red

;#cmdSetup separator - Global_Settings
;2 100 Sunken

#cmdSetup buttonsOn 1.50V_LiIon_Strong_Protect Global_Settings
:read: CONFig:LDSPfn:ENABle?
:readmath: getElement("OFF ON",value);
:write: CONFig:LDSPfn:ENABle #; [100]
:tip: Charging won't start for 1.5V liion batteries above 2V when LISP is enabled.
:string:   
Off OFF
On ON
:update: Global_Settings.1.50V_LiIon_Strong_Protect_Status 

;#cmdSetup indicatornum 1.50V_LiIon_Strong_Protect_Status Global_Settings
;:read: CONFig:LDSPfn:ENABle?
;:tip: Shows the status of the LDSP
;Off 0 green
;On 1 red

;#cmdSetup separator - Global_Settings
;2 100 Sunken

#cmdSetup buttonsOn Enable_Auto-start_Program Global_Settings
:read: CONFig:AUTOstart:ENABle?
:readmath: getElement("NO YES",value);
:write: CONFig:AUTOstart:ENABle #; [100]
:tip: Allows auto-start of the program. The program will not auto-start on the first power-up.
:string:   
No NO
Yes YES
:update: Global_Settings.Enable_Auto-start_Program_Status 

;#cmdSetup indicatornum Enable_Auto-start_Program_Status Global_Settings
;:read: CONFig:AUTOstart:ENABle?
;:tip: Allow program auto-start?
;No 0 green
;Yes 1 red

;#cmdSetup separator - Global_Settings
;2 100 Sunken

#cmdSetup buttonsOn Enable_Calibration Global_Settings
:read: CONFig:CALIbration:ENABle?
:readmath: getElement("NO YES",value);
:write: CONFig:CALIbration:ENABle #; [100]
:tip: Allow calibration of voltage, charge current, and discharge current.
:string:   
No NO
Yes YES
:update: Global_Settings.Enable_Calibration_Status  

;#cmdSetup indicatornum Enable_Calibration_Status Global_Settings
;:read: CONFig:CALIbration:ENABle?
;:tip: Allow calibration?
;No 0 green
;Yes 1 red

;#cmdSetup separator - Global_Settings
;2 100 Sunken

#cmdSetup buttonsOn Enable_Test_IR Global_Settings
:read: CONFig:TESTir:ENABle?
:readmath: getElement("NO YES",value);
:write: CONFig:TESTir:ENABle #; [100]
:tip: Enable battery internal resistance test? Measurements are for reference only.
:string:   
No NO
Yes YES
:update: Global_Settings.Enable_Test_IR_Status  

;#cmdSetup indicatornum Enable_Test_IR_Status Global_Settings
;:read: CONFig:TESTir:ENABle?
;:tip: Enable battery internal resistance test?
;No 0 green
;Yes 1 red

;#cmdSetup separator - Global_Settings
;2 100 Sunken

#cmdSetup buttonsOn Enable_0V_Battery_Activation Global_Settings
:read: CONFig:ACTIvatebattery:ENABle?
:readmath: getElement("NO YES",value);
:write: CONFig:ACTIvatebattery:ENABle #; [100]
:tip: Enable 0V battery activation?Activating over-discharged lithium-ion batteries is not recommended.
:string:   
No NO
Yes YES
:update: Global_Settings.Enable_0V_Battery_Activation_Status  

;#cmdSetup indicatornum Enable_0V_Battery_Activation_Status Global_Settings
;:read: CONFig:ACTIvatebattery:ENABle?
;:tip: Enable 0V battery activation?
;No 0 green
;Yes 1 red

#cmdSetup separator - Global_Settings
2 100 Sunken

#cmdSetup combobox CH1_Default_Program Global_Settings
:write: CONFig:DEFAultprogram Ch1,#;[100]
:read: CONFig:DEFAultprogram? Ch1;  
:tip: The default program is loaded when the charger is powered on or when the "Restore Default Program" operation is performed.
:string:
Program_0 0
Program_1 1
Program_2 2
Program_3 3
Program_4 4
Program_5 5
Program_6 6
Program_7 7
Program_8 8
Program_9 9
Program_10 10
Program_11 11
Program_12 12
Program_13 13
Program_14 14
Program_15 15
Program_16 16
Program_17 17
Program_18 18
Program_19 19
Program_20 20
Program_21 21
Program_22 22
Program_23 23
Program_24 24
Program_25 25
Program_26 26
Program_27 27
Program_28 28
Program_29 29
Program_30 30
Program_31 31

;#cmdSetup separator - Global_Settings
;2 100 Sunken

#cmdSetup combobox CH2_Default_Program Global_Settings
:write: CONFig:DEFAultprogram Ch2,#;[100]
:read: CONFig:DEFAultprogram? Ch2;  
:tip: The default program is loaded when the charger is powered on or when the "Restore Default Program" operation is performed. 
:string:
Program_0 0
Program_1 1
Program_2 2
Program_3 3
Program_4 4
Program_5 5
Program_6 6
Program_7 7
Program_8 8
Program_9 9
Program_10 10
Program_11 11
Program_12 12
Program_13 13
Program_14 14
Program_15 15
Program_16 16
Program_17 17
Program_18 18
Program_19 19
Program_20 20
Program_21 21
Program_22 22
Program_23 23
Program_24 24
Program_25 25
Program_26 26
Program_27 27
Program_28 28
Program_29 29
Program_30 30
Program_31 31

;#cmdSetup separator - Global_Settings
;2 100 Sunken

#cmdSetup combobox CH3_Default_Program Global_Settings
:write: CONFig:DEFAultprogram Ch3,#;[100]
:read: CONFig:DEFAultprogram? Ch3; 
:tip: The default program is loaded when the charger is powered on or when the "Restore Default Program" operation is performed.  
:string:
Program_0 0
Program_1 1
Program_2 2
Program_3 3
Program_4 4
Program_5 5
Program_6 6
Program_7 7
Program_8 8
Program_9 9
Program_10 10
Program_11 11
Program_12 12
Program_13 13
Program_14 14
Program_15 15
Program_16 16
Program_17 17
Program_18 18
Program_19 19
Program_20 20
Program_21 21
Program_22 22
Program_23 23
Program_24 24
Program_25 25
Program_26 26
Program_27 27
Program_28 28
Program_29 29
Program_30 30
Program_31 31

;#cmdSetup separator - Global_Settings
;2 100 Sunken

#cmdSetup combobox CH4_Default_Program Global_Settings
:write: CONFig:DEFAultprogram Ch4,#;[100]
:read: CONFig:DEFAultprogram? Ch4; 
:tip: The default program is loaded when the charger is powered on or when the "Restore Default Program" operation is performed.  
:string:
Program_0 0
Program_1 1
Program_2 2
Program_3 3
Program_4 4
Program_5 5
Program_6 6
Program_7 7
Program_8 8
Program_9 9
Program_10 10
Program_11 11
Program_12 12
Program_13 13
Program_14 14
Program_15 15
Program_16 16
Program_17 17
Program_18 18
Program_19 19
Program_20 20
Program_21 21
Program_22 22
Program_23 23
Program_24 24
Program_25 25
Program_26 26
Program_27 27
Program_28 28
Program_29 29
Program_30 30
Program_31 31

#cmdSetup separator - Global_Settings
2 100 Sunken

#cmdSetup infoAsk Total_Runtime Global_Settings
:read: *UPT?;   
:tip:Click "Get" to get the duration of continuous operation from startup to the current time.

#cmdSetup separator - Global_Settings
2 100 Sunken

#cmdSetup button Start_All_Channel_Process Global_Settings
:write:SUPEr:CONTrol:RUN CH1;[100]; SUPEr:CONTrol:RUN CH2;[100];SUPEr:CONTrol:RUN CH3;[100];SUPEr:CONTrol:RUN CH4;[100];   
:tip:The button start all channel Processe. 

#cmdSetup button Stop_All_Channel_Process Global_Settings
:write:SUPEr:CONTrol:STOP CH1;[100];SUPEr:CONTrol:STOP CH2;[100];SUPEr:CONTrol:STOP CH3;[100];SUPEr:CONTrol:STOP CH4;[100];
:tip:The button stop all channel  program.  

#cmdSetup separator - Global_Settings
2 100 Sunken

#cmdSetup button Release_Control_To_Channel_1 Global_Settings
:write: CONTrol:RELEase CH1;[100] 
:tip: When running a test sequence via a control script, click this button to release control and stop further programs from running after the current one finishes.

#cmdSetup button Release_Control_To_Channel_2 Global_Settings
:write: CONTrol:RELEase CH2;[100] 
:tip: When running a test sequence via a control script, click this button to release control and stop further programs from running after the current one finishes.

#cmdSetup button Release_Control_To_Channel_3 Global_Settings
:write: CONTrol:RELEase CH3;[100] 
:tip: When running a test sequence via a control script, click this button to release control and stop further programs from running after the current one finishes.

#cmdSetup button Release_Control_To_Channel_4 Global_Settings
:write: CONTrol:RELEase CH4;[100] 
:tip: When running a test sequence via a control script, click this button to release control and stop further programs from running after the current one finishes.

#cmdSetup separator - Global_Settings
2 100 Sunken

#cmdSetup button Close_The_Program_Configurator Global_Settings
:write: CONTrol:PROGram:COMPleted none;[100];
:update: Configurator.Please_Click_The_Button! 
:tip: Close the Program Configurator, similar to the "Exit The Program Configurator" in the Configurator.

;*****************************************************************
;Program List
;*****************************************************************
#cmdSetup color - Program_List
(255,250,205)

#cmdSetup info Program_0 Program_List
:read: PROGram:LONGName? 0;  
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_1 Program_List
:read: PROGram:LONGName? 1; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_2 Program_List
:read: PROGram:LONGName? 2;  
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_3 Program_List
:read: PROGram:LONGName? 3; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_4 Program_List
:read: PROGram:LONGName? 4;  
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_5 Program_List
:read: PROGram:LONGName? 5;  
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_6 Program_List
:read: PROGram:LONGName? 6; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_7 Program_List
:read: PROGram:LONGName? 7; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_8 Program_List
:read: PROGram:LONGName? 8; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_9 Program_List
:read: PROGram:LONGName? 9;  
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_10 Program_List
:read: PROGram:LONGName? 10;  
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_11 Program_List
:read: PROGram:LONGName? 11;  
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515"); 

#cmdSetup info Program_12 Program_List
:read: PROGram:LONGName? 12; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_13 Program_List
:read: PROGram:LONGName? 13; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_14 Program_List
:read: PROGram:LONGName? 14; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_15 Program_List
:read: PROGram:LONGName? 15; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_16 Program_List
:read: PROGram:LONGName? 16; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_17 Program_List
:read: PROGram:LONGName? 17;  
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_18 Program_List
:read: PROGram:LONGName? 18; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_19 Program_List
:read: PROGram:LONGName? 19; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_20 Program_List
:read: PROGram:LONGName? 20;  
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_21 Program_List
:read: PROGram:LONGName? 21; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_22 Program_List
:read: PROGram:LONGName? 22; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_23 Program_List
:read: PROGram:LONGName? 23; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_24 Program_List
:read: PROGram:LONGName? 24; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_25 Program_List
:read: PROGram:LONGName? 25; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_26 Program_List
:read: PROGram:LONGName? 26; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_27 Program_List
:read: PROGram:LONGName? 27; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_28 Program_List
:read: PROGram:LONGName? 28; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_29 Program_List
:read: PROGram:LONGName? 29; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_30 Program_List
:read: PROGram:LONGName? 30;
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

#cmdSetup info Program_31 Program_List
:read: PROGram:LONGName? 31; 
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

;#cmdSetup separator - Program_List
;2 100 Empty

#cmdSetup separator - Program_List
2 100 Sunken

#cmdSetup button Download_Or_Sync_Program_Name Program_List
:update:Program_List.Program_0 Program_List.Program_1 Program_List.Program_2 Program_List.Program_3 Program_List.Program_4 Program_List.Program_5 Program_List.Program_6 Program_List.Program_7 Program_List.Program_8 Program_List.Program_9 Program_List.Program_10 Program_List.Program_11 Program_List.Program_12 Program_List.Program_13 Program_List.Program_14 Program_List.Program_15 Program_List.Program_16 Program_List.Program_17 Program_List.Program_18 Program_List.Program_19 Program_List.Program_20 Program_List.Program_21 Program_List.Program_22 Program_List.Program_23 Program_List.Program_24 Program_List.Program_25 Program_List.Program_26 Program_List.Program_27 Program_List.Program_28 Program_List.Program_29 Program_List.Program_30 Program_List.Program_31   
:tip: Download and display the long names of 32 programs. The "Other" button at the bottom-right reads the program names as text for copying and printing.                             

;*****************************************************************
;Program_Configurator
;*****************************************************************
#cmdSetup color - Configurator
(100,149,237)
;:enable: printLog(getVarList(1)) ;

;#cmdSetup combobox Channel Configurator
;:write: channel #;[100];
;:read: channel?;
;:update: Configurator.A_Channel_Must_Be_Selected_First! 
;:tip:Loads to the selected channel; "None" indicates no loading.
;:string:
;Please_select_the_correct_channel Error
;None None
;Channel_1 Ch1
;Channel_2 Ch2
;Channel_3 Ch3
;Channel_4 Ch4

#cmdSetup button Pre-processing_Before_Starting_Program_Configuration Configurator
:write: channel none;[100]; Preprocess;[100];
:update: Configurator.Please_Click_The_Button! 
:tip: The button initiates the program configuration process, allowing customization and saving of settings. Please remove all batteries before configuration.

#cmdSetup selector Please_Click_The_Button! Configurator
:read: Preprocess? 
:tip:The“Pre-Processing”button must be clicked first.
Ready  Configurator.Select_A_Program_To_Configure Configurator.Battery_Type Configurator.Task Configurator.Task_Selected  
:update: Configurator.Select_A_Program_To_Configure Configurator.Battery_Type Configurator.Task Configurator.Task_Selected

#cmdSetup combobox Select_A_Program_To_Configure Configurator     
:write: SelectAProgramToConfigure #;[100]
:read: SerialNo? ;   
:tip:Select a similar program as a template to modify, which can expedite the configuration process.
:update: Configurator.Battery_Type Configurator.Task Configurator.Task_Selected
:string:
Program_0 0
Program_1 1
Program_2 2
Program_3 3
Program_4 4
Program_5 5
Program_6 6
Program_7 7
Program_8 8
Program_9 9
Program_10 10
Program_11 11
Program_12 12
Program_13 13
Program_14 14
Program_15 15
Program_16 16
Program_17 17
Program_18 18
Program_19 19
Program_20 20
Program_21 21
Program_22 22
Program_23 23
Program_24 24
Program_25 25
Program_26 26
Program_27 27
Program_28 28
Program_29 29
Program_30 30
Program_31 31
Select_a_program temp

#cmdSetup combobox Battery_Type Configurator
:write: Type #;[100];    
:read: Type? ;
:update: Configurator.Task Configurator.Task_Selected
:string:
NiMh/Cd Ni
LiionStd Li
LiFePO4 LF
Liion430 Li430
Liion435 Li435
Liion150 LD

#cmdSetup combobox Task Configurator
:write: Task #; [100];  
:read: Task?;      
:update:Configurator.Task_Selected 
:string:
Charge C
Discharge D
Cycle Cy
Refresh Re
Storage St
:visible: inList(Configurator.Battery_Type,"Li LF Li430 Li435")

#cmdSetup combobox Task Configurator
:write: Task #; [100];  
:read: Task?;      
:update:Configurator.Task_Selected 
:string:
Charge C
Discharge D
Cycle Cy
Break-in Br
Refresh Re
:visible: Configurator.Battery_Type=="Ni"

#cmdSetup combobox Task Configurator
:write: Task #; [100];  
:read: Task?;      
:update:Configurator.Task_Selected 
:string:
Charge C
Discharge D
Cycle Cy
Refresh Re
:visible: Configurator.Battery_Type=="LD"

#cmdSetup combobox Cycle_Mode Configurator
:write: CycleMode #; [100];  
:read: CycleMode?     
:string:
C>D>C CDC
D>C>D DCD
D>C DC
C>D CD

#cmdSetup number Cycle_Count Configurator
:write: CycleCounts #; [100];  
:read: CycleCounts?;    
count 1 10

#cmdSetup number Max_Capacity Configurator
:write: MaxCapacity #; [100];  
:read: MaxCapacity?;    
:tip:
Ah 0.100 9.999
:visible:!inList(Configurator.Battery_Type, "LD")

#cmdSetup number Max_Capacity Configurator
:write: MaxCapacity #; [100];  
:read: MaxCapacity?;    
Wh 0.100 9.999
:visible:inList(Configurator.Battery_Type, "LD")

#cmdSetup number Precharge_Current Configurator
:write: PrechargeCurrent #; [100];  
:read: PrechargeCurrent?;    
A 0.030 2.000
:visible:inList(Configurator.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Max_Pre_Charge_Time Configurator
:write: MaxPreChargeTime  #; [100];  
:read: MaxPreChargeTime?;    
Min 1 1000
:visible:inList(Configurator.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Precharge_To_Fast_Charge_Voltage Configurator
:write: Prechargetofastcharge #; [100];  
:read: Prechargetofastcharge?;    
V 0.500 3.800
:visible:inList(Configurator.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Charge_Current Configurator
:write: ChargeCurrent #; [100];  
:read: ChargeCurrent?;  
A 0.030 2.000
:visible:inList(Configurator.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Max_Charge_Current Configurator
:write: ChargeCurrent #; [100];  
:read: ChargeCurrent?;  
A 2.000 2.000
:visible:inList(Configurator.Battery_Type, "LD")

#cmdSetup number Max_Charge_Time Configurator
:write: MaxChargeTime   #; [100];  
:read: MaxChargeTime?;    
Min 1 1000

#cmdSetup number End_Charge_Current Configurator
:write: EndChargeCurrent #; [100];  
:read: EndChargeCurrent?;    
A 0.030 2.000
:visible:inList(Configurator.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number End_Charge_Voltage Configurator
:write: EndChargeVoltage #; [100];  
:read: EndChargeVoltage?;    
V 0.030 4.400
:visible:inList(Configurator.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number Platform_Voltage Configurator
:write: EndChargeVoltage #; [100];  
:read: EndChargeVoltage?;    
V 4.850 4.850
:visible:inList(Configurator.Battery_Type, "LD")

#cmdSetup number Storage_Target_Voltage Configurator
:write: EndChargeVoltage #; [100];  
:read: EndChargeVoltage?;    
V 2.500 4.400
:visible:inList(Configurator.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number Restart_Voltage Configurator
:write: RestartVoltage #; [100];  
:read: RestartVoltage?;  
V 0 4.000
:visible:inList(Configurator.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Target_Voltage Configurator
:write: TargetVoltage #; [100];  
:read: TargetVoltage?;  
V 1.000 2.000
:visible: Configurator.Battery_Type=="Ni"

#cmdSetup combobox Delta_Peak_Voltage Configurator
:write: DeltaPeak #; [100];  
:read: DeltaPeak?;    
;:readmath: getElement("0,1,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10",value); 
:string:
0dV 0
1_mV 1
2_mV 2
3_mV 3
4_mV 4
5_mV 5
6_mV 6
7_mV 7
8_mV 8
9_mV 9
Advice 10
:visible: Configurator.Battery_Type=="Ni"

#cmdSetup number Charge_Resting_Time Configurator
:write: ChargeRestingTime #; [100];  
:read: ChargeRestingTime?;    
Min 1 1000

#cmdSetup number Discharge_Current Configurator
:write: DischargeCurrent #; [100];  
:read: DischargeCurrent?;  
A 0.030 1.000

#cmdSetup number Max_Discharge_Time Configurator
:write: MaxDischargeTime #; [100];  
:read: MaxDischargeTime?;    
Min 1 1000

#cmdSetup number Discharge_Reduce_Current Configurator
:write:DischargeReduceCurrent #; [100];  
:read:DischargeReduceCurrent?;  
A 0.020 1.000
:visible:inList(Configurator.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Discharge_Cut_Voltage Configurator
:write: DischargeCutVoltage #; [100];  
:read: DischargeCutVoltage?;    
V 0.500 4.400

#cmdSetup number Discharge_Resting_Time Configurator
:write: DischargeRestingTime #; [100];  
:read: DischargeRestingTime?;    
Min 1 1000

;#cmdSetup text Long_Name Configurator 
;:write: LongName #; [100];  
;:read: LongName?;    
;16

#cmdSetup text Long_Name Configurator
:write: LongName (replaceCharsR(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515"));[100];
:read: LongName?;
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
:popupPhrase:array("\u2191","\u2193","\u29bb","\u23b2","\u2195","\u22A5","\u250d","\u2515","\u2126");
:tip: Right click for special symbols.
16

;#cmdSetup text Short_Name Configurator 
;:write: ShortName #; [100];  
;:read: ShortName?;    
;10

#cmdSetup text Short_Name Configurator 
:write: ShortName (replaceCharsR(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515"));[100];
:read: ShortName?;    
:readmath:replaceChars(value,"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
:popupPhrase:array("\u2191","\u2193","\u29bb","\u23b2","\u2195","\u22A5","\u250d","\u2515","\u2126");
:tip: Right click for special symbols.
10

#cmdSetup combobox Save_To_The_Specified_Program Configurator     
:write: SerialNo #;[100]
:read: SerialNo? ;   
:tip:The configuration settings will be saved under the specified program number.
:string:
Program_0 0
Program_1 1
Program_2 2
Program_3 3
Program_4 4
Program_5 5
Program_6 6
Program_7 7
Program_8 8
Program_9 9
Program_10 10
Program_11 11
Program_12 12
Program_13 13
Program_14 14
Program_15 15
Program_16 16
Program_17 17
Program_18 18
Program_19 19
Program_20 20
Program_21 21
Program_22 22
Program_23 23
Program_24 24
Program_25 25
Program_26 26
Program_27 27
Program_28 28
Program_29 29
Program_30 30
Program_31 31
Temporary temp

#cmdSetup button Save_Program Configurator
:write: SaveCurrentProgram;[100];
:update: Configurator.Select_A_Program_To_Configure Configurator.Battery_Type Configurator.Task Configurator.Task_Selected 
:tip:The program must be saved by clicking this button. 

#cmdSetup button Exit_The_Program_Configurator Configurator
:write: ExitProgramConfiguration;[100];
:update: Configurator.Please_Click_The_Button! 
:tip:Exit the program configurator by clicking this button.

#cmdSetup selector Task_Selected Configurator
:read: Task?; 
:tip:Different tasks have different configuration options.
C Configurator.Save_To_The_Specified_Program Configurator.Save_Program Configurator.Exit_The_Program_Configurator  Configurator.Long_Name Configurator.Short_Name Configurator.Max_Pre_Charge_Time Configurator.Max_Charge_Time Configurator.Precharge_Current Configurator.Charge_Current Configurator.Precharge_To_Fast_Charge_Voltage Configurator.Restart_Voltage Configurator.Target_Voltage  Configurator.Delta_Peak_Voltage Configurator.End_Charge_Current Configurator.End_Charge_Voltage  Configurator.Max_Capacity Configurator.Max_Charge_Current Configurator.Platform_Voltage 

D Configurator.Save_To_The_Specified_Program Configurator.Save_Program Configurator.Exit_The_Program_Configurator Configurator.Long_Name Configurator.Short_Name Configurator.Max_Discharge_Time Configurator.Discharge_Cut_Voltage Configurator.Discharge_Current  Configurator.Discharge_Reduce_Current 

Cy Configurator.Save_To_The_Specified_Program Configurator.Save_Program Configurator.Exit_The_Program_Configurator Configurator.Long_Name Configurator.Short_Name Configurator.Max_Pre_Charge_Time Configurator.Max_Charge_Time Configurator.Max_Discharge_Time Configurator.Charge_Resting_Time Configurator.Discharge_Resting_Time Configurator.Cycle_Mode  Configurator.Cycle_Count Configurator.Precharge_Current  Configurator.Charge_Current Configurator.Precharge_To_Fast_Charge_Voltage Configurator.Discharge_Cut_Voltage Configurator.Discharge_Current  Configurator.Discharge_Reduce_Current Configurator.Target_Voltage Configurator.Delta_Peak_Voltage Configurator.End_Charge_Current Configurator.End_Charge_Voltage Configurator.Max_Capacity Configurator.Max_Charge_Current Configurator.Platform_Voltage

Br Configurator.Save_To_The_Specified_Program Configurator.Save_Program Configurator.Exit_The_Program_Configurator Configurator.Long_Name Configurator.Short_Name Configurator.Max_Capacity

Re Configurator.Save_To_The_Specified_Program Configurator.Save_Program Configurator.Exit_The_Program_Configurator Configurator.Long_Name Configurator.Short_Name Configurator.Charge_Current Configurator.Discharge_Cut_Voltage Configurator.Discharge_Current Configurator.Target_Voltage Configurator.End_Charge_Current Configurator.End_Charge_Voltage Configurator.Max_Capacity Configurator.Max_Charge_Current Configurator.Platform_Voltage

St Configurator.Save_To_The_Specified_Program Configurator.Save_Program Configurator.Exit_The_Program_Configurator Configurator.Long_Name Configurator.Short_Name Configurator.Charge_Current Configurator.Discharge_Current Configurator.Storage_Target_Voltage Configurator.Max_Capacity 

;*****************************************************************
;CH1 Super Controller
;*****************************************************************
#cmdSetup color - CH1_Super_Controller
(255,215,0)
;:enable: printLog(getVarList(1)) ;

#cmdSetup button Download_Or_Sync_Program CH1_Super_Controller
:update:CH1_Super_Controller.Choose_A_Program_To_Run CH1_Super_Controller.Battery_Type CH1_Super_Controller.Task  CH1_Super_Controller.Nothing
:tip:Download or sync the configuration of the program currently running on Channel 1. 

#cmdSetup separator - CH1_Super_Controller
2 100 Sunken

#cmdSetup combobox Choose_A_Program_To_Run CH1_Super_Controller
:write: SUPEr:PROGram:SETUp Ch1,#;[200]
:read: PROGram:SERIalno? Ch1 ;   
:readmath: getElement("0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,temp",listIndex(value,"0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 255"));
:update: CH1_Super_Controller.Battery_Type CH1_Super_Controller.Task  CH1_Super_Controller.Nothing CH1_Super_Controller.End_Charge_Current CH1_Super_Controller.End_Charge_Voltage CH1_Super_Controller.Target_Voltage CH1_Super_Controller.Delta_Peak_Voltage
:tip:Select a program to run. Subsequent options allow real-time adjustments to key configurations, with limited safety checks by the charger.
:string:
Program_0 0
Program_1 1
Program_2 2
Program_3 3
Program_4 4
Program_5 5
Program_6 6
Program_7 7
Program_8 8
Program_9 9
Program_10 10
Program_11 11
Program_12 12
Program_13 13
Program_14 14
Program_15 15
Program_16 16
Program_17 17
Program_18 18
Program_19 19
Program_20 20
Program_21 21
Program_22 22
Program_23 23
Program_24 24
Program_25 25
Program_26 26
Program_27 27
Program_28 28
Program_29 29
Program_30 30
Program_31 31
Temporary temp

#cmdSetup combobox Battery_Type CH1_Super_Controller
:write:SUPE:PROGram:TYPE ch1, #;[200];
:read: PROGram:TYPE?  ch1;        
:readmath: getElement("Ni,Li,LF,Li430,Li435,LD",value-1);
:update: CH1_Super_Controller.Task CH1_Super_Controller.Choose_A_Program_To_Run 
:tip:Modifying this configuration is not recommended.
:string:
NiMh/Cd Ni
LiionStd Li
LiFePO4 LF
Liion430 Li430
Liion435 Li435
Liion150 LD

#cmdSetup combobox Task CH1_Super_Controller
:write:SUPE:PROGram:TASK ch1,#; [200];
:read: PROGram:TASK?  ch1;    
:readmath: getElement("C,D,Cy,Br,Re,St",value-1);
:tip:Modifying this configuration is not recommended.
:string:
Charge C
Discharge D
Cycle Cy
Refresh Re
Storage St
:update:CH1_Super_Controller.Nothing CH1_Super_Controller.Choose_A_Program_To_Run 
:visible: inList(CH1_Super_Controller.Battery_Type,"Li LF Li430 Li435")

#cmdSetup combobox Task CH1_Super_Controller
:write:SUPE:PROGram:TASK ch1,#; [200];
:read: PROGram:TASK?  ch1;    
:readmath: getElement("C,D,Cy,Br,Re,St",value-1);
:update:CH1_Super_Controller.Nothing CH1_Super_Controller.Choose_A_Program_To_Run 
:tip:Modifying this configuration is not recommended.
:string:
Charge C
Discharge D
Cycle Cy
Break-in Br
Refresh Re
:visible: inList(CH1_Super_Controller.Battery_Type,"Ni")

#cmdSetup combobox Task CH1_Super_Controller
:write:SUPE:PROGram:TASK ch1,#; [200]; 
:read: PROGram:TASK?  ch1;    
:readmath: getElement("C,D,Cy,Br,Re,St",value-1); 
:update:CH1_Super_Controller.Nothing CH1_Super_Controller.Choose_A_Program_To_Run 
:tip:Modifying this configuration is not recommended.
:string:
Charge C
Discharge D
Cycle Cy
Refresh Re
:visible: inList(CH1_Super_Controller.Battery_Type,"LD")

#cmdSetup combobox Cycle_Mode CH1_Super_Controller
:write: SUPE:PROGram:CYCLe:MODE ch1,#; [200];  
:read: PROGram:CYCLe:MODE?  ch1;    
:readmath: getElement("CDC,DCD,DC,CD",value-1);
:update:CH1_Super_Controller.Choose_A_Program_To_Run 
:string:
C>D>C CDC
D>C>D DCD
D>C DC
C>D CD
:visible:inList(CH1_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Cycle_Count CH1_Super_Controller
:write: SUPE:PROGram:CYCLe:COUNts ch1,#; [200];  
:read: PROGram:CYCLe:COUNts?  ch1;    
:update:CH1_Super_Controller.Choose_A_Program_To_Run 
count 1 10
:visible:inList(CH1_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Precharge_To_Fast_Charge_Voltage CH1_Super_Controller
:write: SUPEr:PROGram:VOLTage:PREChargetofastcharge ch1,#V; [200];  
:read: PROGram:VOLTage:PREChargetofastcharge?  ch1;    
:readmath: (value/1000.0) 
:update:CH1_Super_Controller.Choose_A_Program_To_Run 
V 0.500 3.300
:visible:inList(CH1_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Precharge_Current CH1_Super_Controller
:write: SUPE:PROGram:CURRent:PRECharge ch1,#A; [200];  
:read: PROGram:CURRent:PRECharge?  ch1;    
:readmath: (value/1000.0)    
:update:CH1_Super_Controller.Choose_A_Program_To_Run 
A 0.030 2.000
:visible:inList(CH1_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Charge_Current CH1_Super_Controller
:write: SUPE:PROGram:CURRent:CHARge ch1,#A; [200];  
:read: PROGram:CURRent:CHARge?  ch1;
:readmath: (value/1000.0)  
:update:CH1_Super_Controller.Choose_A_Program_To_Run 
A 0.030 2.000
:visible:inList(CH1_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number End_Charge_Current CH1_Super_Controller
:write: SUPE:PROGram:CURRent:TERMination ch1,#A; [200];  
:read: PROGram:CURRent:TERMination?  ch1; 
:readmath: (value/1000.0)    
:update:CH1_Super_Controller.Choose_A_Program_To_Run 
A 0.030 2.000
:visible:inList(CH1_Super_Controller.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number End_Charge_Voltage CH1_Super_Controller
:write: SUPE:PROGram:VOLTage:TERMination ch1,#V; [200];  
:read: PROGram:VOLTage:TERMination?  ch1;    
:readmath: (value/1000.0)  
:update:CH1_Super_Controller.Choose_A_Program_To_Run 
V 0.030 4.850
:visible:inList(CH1_Super_Controller.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number Target_Voltage CH1_Super_Controller
:write: SUPEr:PROGram:VOLTage:TARGet ch1,#V; [200];  
:read: PROGram:VOLTage:TARGet?  ch1;  
:readmath: (value/1000.0) 
:update:CH1_Super_Controller.Choose_A_Program_To_Run 
V 0.900 2.000
:visible: CH1_Super_Controller.Battery_Type=="Ni" 

#cmdSetup combobox Delta_Peak_Voltage CH1_Super_Controller
:write: SUPEr:PROGram:DELTaPeak ch1,#; [200];  
:read: PROGram:DELTaPeak?  ch1;    
;:readmath: getElement("0,1,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10",value); 
:update:CH1_Super_Controller.Choose_A_Program_To_Run 
:string:
0dV 0
1_mV 1
2_mV 2
3_mV 3
4_mV 4
5_mV 5
6_mV 6
7_mV 7
8_mV 8
9_mV 9
Advice 10
:visible: CH1_Super_Controller.Battery_Type=="Ni" 

;#cmdSetup number Storage_Target_Voltage CH1_Super_Controller
;:write: SUPE:PROGram:VOLTage:TERMination ch1,#V; [50];SUPEr:PROGram:VOLTage:CUT ch1,#V; [200];    
;:read: PROGram:VOLTage:TERMination?  ch1;   
;:readmath: (value/1000.0)  
;:update:CH1_Super_Controller.Choose_A_Program_To_Run 
;V 3.0 4.200
;:visible:inList(CH1_Super_Controller.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number Discharge_Current CH1_Super_Controller
:write: SUPEr:PROGram:CURRent:DISCharge ch1,#A; [200];  
:read: PROGram:CURRent:DISCharge?  ch1;  
:readmath: (value/1000.0) 
:update:CH1_Super_Controller.Choose_A_Program_To_Run 
A 0.030 1.000
:visible:inList(CH1_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Discharge_Reduce_Current CH1_Super_Controller
:write: SUPEr:PROGram:CURRent:DISCharge:REDUce ch1,#A; [200];  
:read:PROGram:CURRent:DISCharge:REDUce?  ch1;  
:readmath: (value/1000.0) 
:update:CH1_Super_Controller.Choose_A_Program_To_Run 
A 0.030 1.000
:visible:inList(CH1_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Discharge_Cut_Voltage CH1_Super_Controller
:write: SUPEr:PROGram:VOLTage:CUT ch1,#V; [200];  
:read: PROGram:VOLTage:CUT?  ch1;    
:readmath: (value/1000.0) 
:update:CH1_Super_Controller.Choose_A_Program_To_Run 
V 0.500 4.000
:visible:inList(CH1_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup selector Nothing CH1_Super_Controller
:read: PROGram:TASK?  ch1;
:readmath: getElement("C,D,Cy,Br,Re,St",value-1); 
:update: CH1_Super_Controller.Cycle_Mode CH1_Super_Controller.Cycle_Count 
:tip:
C  CH1_Super_Controller.End_Charge_Current CH1_Super_Controller.End_Charge_Voltage CH1_Super_Controller.Target_Voltage CH1_Super_Controller.Delta_Peak_Voltage CH1_Super_Controller.Precharge_Current  CH1_Super_Controller.Charge_Current CH1_Super_Controller.Precharge_To_Fast_Charge_Voltage 

D  CH1_Super_Controller.Discharge_Cut_Voltage CH1_Super_Controller.Discharge_Current  CH1_Super_Controller.Discharge_Reduce_Current 

Cy CH1_Super_Controller.End_Charge_Current CH1_Super_Controller.End_Charge_Voltage CH1_Super_Controller.Target_Voltage CH1_Super_Controller.Delta_Peak_Voltage CH1_Super_Controller.Cycle_Mode  CH1_Super_Controller.Cycle_Count CH1_Super_Controller.Precharge_Current  CH1_Super_Controller.Charge_Current CH1_Super_Controller.Precharge_To_Fast_Charge_Voltage CH1_Super_Controller.Discharge_Cut_Voltage CH1_Super_Controller.Discharge_Current  CH1_Super_Controller.Discharge_Reduce_Current 

;St CH1_Super_Controller.End_Charge_Current CH1_Super_Controller.Precharge_Current  CH1_Super_Controller.Charge_Current CH1_Super_Controller.Precharge_To_Fast_Charge_Voltage CH1_Super_Controller.Storage_Target_Voltage CH1_Super_Controller.Discharge_Current  CH1_Super_Controller.Discharge_Reduce_Current  

#cmdSetup separator - CH1_Super_Controller
2 100 Sunken

#cmdSetup infoAsk Status CH1_Super_Controller
:read: Status? Ch1; 
:tip:Click "Get" to retrieve the real-time status of the channel 1.    

#cmdSetup separator - CH1_Super_Controller
2 100 Sunken

#cmdSetup button Start_Process CH1_Super_Controller
:write:SUPEr:CONTrol:RUN Ch1;[200]; 
:update:CH1_Super_Controller.Choose_A_Program_To_Run CH1_Super_Controller.Battery_Type CH1_Super_Controller.Task  CH1_Super_Controller.Nothing
:tip:The button start the program.

#cmdSetup button Stop_Process CH1_Super_Controller
:write:SUPEr:CONTrol:STOP Ch1;[200];
:tip:The button stop the program. 

#cmdSetup separator - CH1_Super_Controller
2 100 Sunken

#cmdSetup button Start_Battery_Activation_Process CH1_Super_Controller
:write:SUPEr:CONTrol:ACTIvatebattery:STARt CH1;[200]; 
:tip:Protected cells with Low Voltage Protection triggered are generally safe.But activation is not recommended for unprotected over-discharged cells. The process lasts 2 minutes.

#cmdSetup button Exit_Battery_Activation_Process CH1_Super_Controller
:write:SUPEr:CONTrol:ACTIvatebattery:EXIT CH1;[200];
:tip:Terminate the battery activation process early. After 2 minutes, the charger will automatically end the process.

;*****************************************************************
;CH2 Super Controller
;*****************************************************************
#cmdSetup color - CH2_Super_Controller
(218,112,214)
;:enable: printLog(getVarList(1)) ;

#cmdSetup button Download_Or_Sync_Program CH2_Super_Controller
:update:CH2_Super_Controller.Choose_A_Program_To_Run CH2_Super_Controller.Battery_Type CH2_Super_Controller.Task  CH2_Super_Controller.Nothing
:tip:Download or sync the configuration of the program currently running on Channel 2.  

#cmdSetup separator - CH2_Super_Controller
2 100 Sunken

#cmdSetup combobox Choose_A_Program_To_Run CH2_Super_Controller
:write: SUPEr:PROGram:SETUp CH2,#;[200]
:read: PROGram:SERIalno? CH2 ;   
:readmath: getElement("0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,temp",listIndex(value,"0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 255"));
:update: CH2_Super_Controller.Battery_Type CH2_Super_Controller.Task  CH2_Super_Controller.Nothing CH2_Super_Controller.End_Charge_Current CH2_Super_Controller.End_Charge_Voltage CH2_Super_Controller.Target_Voltage CH2_Super_Controller.Delta_Peak_Voltage
:tip:Select a program to run. Subsequent options allow real-time adjustments to key configurations, with limited safety checks by the charger.
:string:
Program_0 0
Program_1 1
Program_2 2
Program_3 3
Program_4 4
Program_5 5
Program_6 6
Program_7 7
Program_8 8
Program_9 9
Program_10 10
Program_11 11
Program_12 12
Program_13 13
Program_14 14
Program_15 15
Program_16 16
Program_17 17
Program_18 18
Program_19 19
Program_20 20
Program_21 21
Program_22 22
Program_23 23
Program_24 24
Program_25 25
Program_26 26
Program_27 27
Program_28 28
Program_29 29
Program_30 30
Program_31 31
Temporary temp

#cmdSetup combobox Battery_Type CH2_Super_Controller
:write:SUPE:PROGram:TYPE CH2, #;[200];
:read: PROGram:TYPE?  CH2;        
:readmath: getElement("Ni,Li,LF,Li430,Li435,LD",value-1);
:update: CH2_Super_Controller.Task CH2_Super_Controller.Choose_A_Program_To_Run 
:tip:Modifying this configuration is not recommended.
:string:
NiMh/Cd Ni
LiionStd Li
LiFePO4 LF
Liion430 Li430
Liion435 Li435
Liion150 LD

#cmdSetup combobox Task CH2_Super_Controller
:write:SUPE:PROGram:TASK CH2,#; [200];
:read: PROGram:TASK?  CH2;    
:readmath: getElement("C,D,Cy,Br,Re,St",value-1);
:update:CH2_Super_Controller.Nothing CH2_Super_Controller.Choose_A_Program_To_Run 
:tip:Modifying this configuration is not recommended.
:string:
Charge C
Discharge D
Cycle Cy
Refresh Re
Storage St
:visible: inList(CH2_Super_Controller.Battery_Type,"Li LF Li430 Li435")

#cmdSetup combobox Task CH2_Super_Controller
:write:SUPE:PROGram:TASK CH2,#; [200];
:read: PROGram:TASK?  CH2;    
:readmath: getElement("C,D,Cy,Br,Re,St",value-1);
:update:CH2_Super_Controller.Nothing CH2_Super_Controller.Choose_A_Program_To_Run 
:tip:Modifying this configuration is not recommended.
:string:
Charge C
Discharge D
Cycle Cy
Break-in Br
Refresh Re
:visible: inList(CH2_Super_Controller.Battery_Type,"Ni")

#cmdSetup combobox Task CH2_Super_Controller
:write:SUPE:PROGram:TASK CH2,#; [200]; 
:read: PROGram:TASK?  CH2;    
:readmath: getElement("C,D,Cy,Br,Re,St",value-1); 
:update:CH2_Super_Controller.Nothing CH2_Super_Controller.Choose_A_Program_To_Run 
:tip:Modifying this configuration is not recommended.
:string:
Charge C
Discharge D
Cycle Cy
Refresh Re
:visible: inList(CH2_Super_Controller.Battery_Type,"LD")

#cmdSetup combobox Cycle_Mode CH2_Super_Controller
:write: SUPE:PROGram:CYCLe:MODE CH2,#; [200];  
:read: PROGram:CYCLe:MODE?  CH2;    
:readmath: getElement("CDC,DCD,DC,CD",value-1);
:update:CH2_Super_Controller.Choose_A_Program_To_Run 
:string:
C>D>C CDC
D>C>D DCD
D>C DC
C>D CD
:visible:inList(CH2_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Cycle_Count CH2_Super_Controller
:write: SUPE:PROGram:CYCLe:COUNts CH2,#; [200];  
:read: PROGram:CYCLe:COUNts?  CH2;    
:update:CH2_Super_Controller.Choose_A_Program_To_Run 
count 1 10
:visible:inList(CH2_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Precharge_To_Fast_Charge_Voltage CH2_Super_Controller
:write: SUPEr:PROGram:VOLTage:PREChargetofastcharge CH2,#V; [200];  
:read: PROGram:VOLTage:PREChargetofastcharge?  CH2;    
:readmath: (value/1000.0) 
:update:CH2_Super_Controller.Choose_A_Program_To_Run 
V 0.500 3.300
:visible:inList(CH2_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Precharge_Current CH2_Super_Controller
:write: SUPE:PROGram:CURRent:PRECharge CH2,#A; [200];  
:read: PROGram:CURRent:PRECharge?  CH2;    
:readmath: (value/1000.0)    
:update:CH2_Super_Controller.Choose_A_Program_To_Run 
A 0.030 2.000
:visible:inList(CH2_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Charge_Current CH2_Super_Controller
:write: SUPE:PROGram:CURRent:CHARge CH2,#A; [200];  
:read: PROGram:CURRent:CHARge?  CH2;
:readmath: (value/1000.0)  
:update:CH2_Super_Controller.Choose_A_Program_To_Run 
A 0.030 2.000
:visible:inList(CH2_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number End_Charge_Current CH2_Super_Controller
:write: SUPE:PROGram:CURRent:TERMination CH2,#A; [200];  
:read: PROGram:CURRent:TERMination?  CH2; 
:readmath: (value/1000.0)    
:update:CH2_Super_Controller.Choose_A_Program_To_Run 
A 0.030 2.000
:visible:inList(CH2_Super_Controller.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number End_Charge_Voltage CH2_Super_Controller
:write: SUPE:PROGram:VOLTage:TERMination CH2,#V; [200];  
:read: PROGram:VOLTage:TERMination?  CH2;    
:readmath: (value/1000.0)  
:update:CH2_Super_Controller.Choose_A_Program_To_Run 
V 0.030 4.850
:visible:inList(CH2_Super_Controller.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number Target_Voltage CH2_Super_Controller
:write: SUPEr:PROGram:VOLTage:TARGet CH2,#V; [200];  
:read: PROGram:VOLTage:TARGet?  CH2;  
:readmath: (value/1000.0) 
:update:CH2_Super_Controller.Choose_A_Program_To_Run 
V 0.900 2.000
:visible: CH2_Super_Controller.Battery_Type=="Ni" 

#cmdSetup combobox Delta_Peak_Voltage CH2_Super_Controller
:write: SUPEr:PROGram:DELTaPeak CH2,#; [200];  
:read: PROGram:DELTaPeak?  CH2;    
;:readmath: getElement("0,1,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10",value); 
:update:CH2_Super_Controller.Choose_A_Program_To_Run 
:string:
0dV 0
1_mV 1
2_mV 2
3_mV 3
4_mV 4
5_mV 5
6_mV 6
7_mV 7
8_mV 8
9_mV 9
Advice 10
:visible: CH2_Super_Controller.Battery_Type=="Ni" 

;#cmdSetup number Storage_Target_Voltage CH2_Super_Controller
;:write: SUPE:PROGram:VOLTage:TERMination CH2,#V; [50];SUPEr:PROGram:VOLTage:CUT CH2,#V; [200];    
;:read: PROGram:VOLTage:TERMination?  CH2;   
;:readmath: (value/1000.0)  
;:update:CH2_Super_Controller.Choose_A_Program_To_Run 
;V 3.0 4.200
;:visible:inList(CH2_Super_Controller.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number Discharge_Current CH2_Super_Controller
:write: SUPEr:PROGram:CURRent:DISCharge CH2,#A; [200];  
:read: PROGram:CURRent:DISCharge?  CH2;  
:readmath: (value/1000.0) 
:update:CH2_Super_Controller.Choose_A_Program_To_Run 
A 0.030 1.000
:visible:inList(CH2_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Discharge_Reduce_Current CH2_Super_Controller
:write: SUPEr:PROGram:CURRent:DISCharge:REDUce CH2,#A; [200];  
:read:PROGram:CURRent:DISCharge:REDUce?  CH2;  
:readmath: (value/1000.0) 
:update:CH2_Super_Controller.Choose_A_Program_To_Run 
A 0.030 1.000
:visible:inList(CH2_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Discharge_Cut_Voltage CH2_Super_Controller
:write: SUPEr:PROGram:VOLTage:CUT CH2,#V; [200];  
:read: PROGram:VOLTage:CUT?  CH2;    
:readmath: (value/1000.0) 
:update:CH2_Super_Controller.Choose_A_Program_To_Run 
V 0.500 4.000
:visible:inList(CH2_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup selector Nothing CH2_Super_Controller
:read: PROGram:TASK?  CH2;
:readmath: getElement("C,D,Cy,Br,Re,St",value-1); 
:update: CH2_Super_Controller.Cycle_Mode CH2_Super_Controller.Cycle_Count 
:tip:
C  CH2_Super_Controller.End_Charge_Current CH2_Super_Controller.End_Charge_Voltage CH2_Super_Controller.Target_Voltage CH2_Super_Controller.Delta_Peak_Voltage CH2_Super_Controller.Precharge_Current  CH2_Super_Controller.Charge_Current CH2_Super_Controller.Precharge_To_Fast_Charge_Voltage 

D  CH2_Super_Controller.Discharge_Cut_Voltage CH2_Super_Controller.Discharge_Current  CH2_Super_Controller.Discharge_Reduce_Current 

Cy CH2_Super_Controller.End_Charge_Current CH2_Super_Controller.End_Charge_Voltage CH2_Super_Controller.Target_Voltage CH2_Super_Controller.Delta_Peak_Voltage CH2_Super_Controller.Cycle_Mode  CH2_Super_Controller.Cycle_Count CH2_Super_Controller.Precharge_Current  CH2_Super_Controller.Charge_Current CH2_Super_Controller.Precharge_To_Fast_Charge_Voltage CH2_Super_Controller.Discharge_Cut_Voltage CH2_Super_Controller.Discharge_Current  CH2_Super_Controller.Discharge_Reduce_Current 

;St CH2_Super_Controller.End_Charge_Current CH2_Super_Controller.Precharge_Current  CH2_Super_Controller.Charge_Current CH2_Super_Controller.Precharge_To_Fast_Charge_Voltage CH2_Super_Controller.Storage_Target_Voltage CH2_Super_Controller.Discharge_Current  CH2_Super_Controller.Discharge_Reduce_Current  

#cmdSetup separator - CH2_Super_Controller
2 100 Sunken

#cmdSetup infoAsk Status CH2_Super_Controller
:read: Status? CH2; 
:tip:Click "Get" to retrieve the real-time status of the channel 2.    

#cmdSetup separator - CH2_Super_Controller
2 100 Sunken

#cmdSetup button Start_Process CH2_Super_Controller
:write:SUPEr:CONTrol:RUN CH2;[200]; 
:update:CH2_Super_Controller.Choose_A_Program_To_Run CH2_Super_Controller.Battery_Type CH2_Super_Controller.Task  CH2_Super_Controller.Nothing
:tip:The button start the program. 

#cmdSetup button Stop_Process CH2_Super_Controller
:write:SUPEr:CONTrol:STOP CH2;[200];
:tip:The button stop the program. 

#cmdSetup separator - CH2_Super_Controller
2 100 Sunken

#cmdSetup button Start_Battery_Activation_Process CH2_Super_Controller
:write:SUPEr:CONTrol:ACTIvatebattery:STARt CH2;[200]; 
:tip:Protected cells with Low Voltage Protection triggered are generally safe.But activation is not recommended for unprotected over-discharged cells. The process lasts 2 minutes.

#cmdSetup button Exit_Battery_Activation_Process CH2_Super_Controller
:write:SUPEr:CONTrol:ACTIvatebattery:EXIT CH2;[200];
:tip:Terminate the battery activation process early. After 2 minutes, the charger will automatically end the process.

;*****************************************************************
;CH3 Super Controller
;*****************************************************************
#cmdSetup color - CH3_Super_Controller
(255,140,0)
;:enable: printLog(getVarList(1)) ;

#cmdSetup button Download_Or_Sync_Program CH3_Super_Controller
:update:CH3_Super_Controller.Choose_A_Program_To_Run CH3_Super_Controller.Battery_Type CH3_Super_Controller.Task  CH3_Super_Controller.Nothing
:tip:Download or sync the configuration of the program currently running on Channel 3. 

#cmdSetup separator - CH3_Super_Controller
2 100 Sunken

#cmdSetup combobox Choose_A_Program_To_Run CH3_Super_Controller
:write: SUPEr:PROGram:SETUp CH3,#;[200]
:read: PROGram:SERIalno? CH3 ;   
:readmath: getElement("0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,temp",listIndex(value,"0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 255"));
:update: CH3_Super_Controller.Battery_Type CH3_Super_Controller.Task  CH3_Super_Controller.Nothing CH3_Super_Controller.End_Charge_Current CH3_Super_Controller.End_Charge_Voltage CH3_Super_Controller.Target_Voltage CH3_Super_Controller.Delta_Peak_Voltage
:tip:Select a program to run. Subsequent options allow real-time adjustments to key configurations, with limited safety checks by the charger.
:string:
Program_0 0
Program_1 1
Program_2 2
Program_3 3
Program_4 4
Program_5 5
Program_6 6
Program_7 7
Program_8 8
Program_9 9
Program_10 10
Program_11 11
Program_12 12
Program_13 13
Program_14 14
Program_15 15
Program_16 16
Program_17 17
Program_18 18
Program_19 19
Program_20 20
Program_21 21
Program_22 22
Program_23 23
Program_24 24
Program_25 25
Program_26 26
Program_27 27
Program_28 28
Program_29 29
Program_30 30
Program_31 31
Temporary temp

#cmdSetup combobox Battery_Type CH3_Super_Controller
:write:SUPE:PROGram:TYPE CH3, #;[200];
:read: PROGram:TYPE?  CH3;        
:readmath: getElement("Ni,Li,LF,Li430,Li435,LD",value-1);
:update: CH3_Super_Controller.Task CH3_Super_Controller.Choose_A_Program_To_Run 
:tip:Modifying this configuration is not recommended.
:string:
NiMh/Cd Ni
LiionStd Li
LiFePO4 LF
Liion430 Li430
Liion435 Li435
Liion150 LD

#cmdSetup combobox Task CH3_Super_Controller
:write:SUPE:PROGram:TASK CH3,#; [200];
:read: PROGram:TASK?  CH3;    
:readmath: getElement("C,D,Cy,Br,Re,St",value-1);
:update:CH3_Super_Controller.Nothing CH3_Super_Controller.Choose_A_Program_To_Run 
:tip:Modifying this configuration is not recommended.
:string:
Charge C
Discharge D
Cycle Cy
Refresh Re
Storage St
:visible: inList(CH3_Super_Controller.Battery_Type,"Li LF Li430 Li435")

#cmdSetup combobox Task CH3_Super_Controller
:write:SUPE:PROGram:TASK CH3,#; [200];
:read: PROGram:TASK?  CH3;    
:readmath: getElement("C,D,Cy,Br,Re,St",value-1);
:update:CH3_Super_Controller.Nothing CH3_Super_Controller.Choose_A_Program_To_Run
:tip:Modifying this configuration is not recommended. 
:string:
Charge C
Discharge D
Cycle Cy
Break-in Br
Refresh Re
:visible: inList(CH3_Super_Controller.Battery_Type,"Ni")

#cmdSetup combobox Task CH3_Super_Controller
:write:SUPE:PROGram:TASK CH3,#; [200]; 
:read: PROGram:TASK?  CH3;    
:readmath: getElement("C,D,Cy,Br,Re,St",value-1); 
:update:CH3_Super_Controller.Nothing CH3_Super_Controller.Choose_A_Program_To_Run
:tip:Modifying this configuration is not recommended. 
:string:
Charge C
Discharge D
Cycle Cy
Refresh Re
:visible: inList(CH3_Super_Controller.Battery_Type,"LD")

#cmdSetup combobox Cycle_Mode CH3_Super_Controller
:write: SUPE:PROGram:CYCLe:MODE CH3,#; [200];  
:read: PROGram:CYCLe:MODE?  CH3;    
:readmath: getElement("CDC,DCD,DC,CD",value-1);
:update:CH3_Super_Controller.Choose_A_Program_To_Run 
:string:
C>D>C CDC
D>C>D DCD
D>C DC
C>D CD
:visible:inList(CH3_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Cycle_Count CH3_Super_Controller
:write: SUPE:PROGram:CYCLe:COUNts CH3,#; [200];  
:read: PROGram:CYCLe:COUNts?  CH3;    
:update:CH3_Super_Controller.Choose_A_Program_To_Run 
count 1 10
:visible:inList(CH3_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Precharge_To_Fast_Charge_Voltage CH3_Super_Controller
:write: SUPEr:PROGram:VOLTage:PREChargetofastcharge CH3,#V; [200];  
:read: PROGram:VOLTage:PREChargetofastcharge?  CH3;    
:readmath: (value/1000.0) 
:update:CH3_Super_Controller.Choose_A_Program_To_Run 
V 0.500 3.300
:visible:inList(CH3_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Precharge_Current CH3_Super_Controller
:write: SUPE:PROGram:CURRent:PRECharge CH3,#A; [200];  
:read: PROGram:CURRent:PRECharge?  CH3;    
:readmath: (value/1000.0)    
:update:CH3_Super_Controller.Choose_A_Program_To_Run 
A 0.030 2.000
:visible:inList(CH3_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Charge_Current CH3_Super_Controller
:write: SUPE:PROGram:CURRent:CHARge CH3,#A; [200];  
:read: PROGram:CURRent:CHARge?  CH3;
:readmath: (value/1000.0)  
:update:CH3_Super_Controller.Choose_A_Program_To_Run 
A 0.030 2.000
:visible:inList(CH3_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number End_Charge_Current CH3_Super_Controller
:write: SUPE:PROGram:CURRent:TERMination CH3,#A; [200];  
:read: PROGram:CURRent:TERMination?  CH3; 
:readmath: (value/1000.0)    
:update:CH3_Super_Controller.Choose_A_Program_To_Run 
A 0.030 2.000
:visible:inList(CH3_Super_Controller.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number End_Charge_Voltage CH3_Super_Controller
:write: SUPE:PROGram:VOLTage:TERMination CH3,#V; [200];  
:read: PROGram:VOLTage:TERMination?  CH3;    
:readmath: (value/1000.0)  
:update:CH3_Super_Controller.Choose_A_Program_To_Run 
V 0.030 4.850
:visible:inList(CH3_Super_Controller.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number Target_Voltage CH3_Super_Controller
:write: SUPEr:PROGram:VOLTage:TARGet CH3,#V; [200];  
:read: PROGram:VOLTage:TARGet?  CH3;  
:readmath: (value/1000.0) 
:update:CH3_Super_Controller.Choose_A_Program_To_Run 
V 0.900 2.000
:visible: CH3_Super_Controller.Battery_Type=="Ni" 

#cmdSetup combobox Delta_Peak_Voltage CH3_Super_Controller
:write: SUPEr:PROGram:DELTaPeak CH3,#; [200];  
:read: PROGram:DELTaPeak?  CH3;    
;:readmath: getElement("0,1,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10",value); 
:update:CH3_Super_Controller.Choose_A_Program_To_Run 
:string:
0dV 0
1_mV 1
2_mV 2
3_mV 3
4_mV 4
5_mV 5
6_mV 6
7_mV 7
8_mV 8
9_mV 9
Advice 10
:visible: CH3_Super_Controller.Battery_Type=="Ni" 

;#cmdSetup number Storage_Target_Voltage CH3_Super_Controller
;:write: SUPE:PROGram:VOLTage:TERMination CH3,#V; [50];SUPEr:PROGram:VOLTage:CUT CH3,#V; [200];    
;:read: PROGram:VOLTage:TERMination?  CH3;   
;:readmath: (value/1000.0)  
;:update:CH3_Super_Controller.Choose_A_Program_To_Run 
;V 3.0 4.200
;:visible:inList(CH3_Super_Controller.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number Discharge_Current CH3_Super_Controller
:write: SUPEr:PROGram:CURRent:DISCharge CH3,#A; [200];  
:read: PROGram:CURRent:DISCharge?  CH3;  
:readmath: (value/1000.0) 
:update:CH3_Super_Controller.Choose_A_Program_To_Run 
A 0.030 1.000
:visible:inList(CH3_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Discharge_Reduce_Current CH3_Super_Controller
:write: SUPEr:PROGram:CURRent:DISCharge:REDUce CH3,#A; [200];  
:read:PROGram:CURRent:DISCharge:REDUce?  CH3;  
:readmath: (value/1000.0) 
:update:CH3_Super_Controller.Choose_A_Program_To_Run 
A 0.030 1.000
:visible:inList(CH3_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Discharge_Cut_Voltage CH3_Super_Controller
:write: SUPEr:PROGram:VOLTage:CUT CH3,#V; [200];  
:read: PROGram:VOLTage:CUT?  CH3;    
:readmath: (value/1000.0) 
:update:CH3_Super_Controller.Choose_A_Program_To_Run 
V 0.500 4.000
:visible:inList(CH3_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup selector Nothing CH3_Super_Controller
:read: PROGram:TASK?  CH3;
:readmath: getElement("C,D,Cy,Br,Re,St",value-1); 
:update: CH3_Super_Controller.Cycle_Mode CH3_Super_Controller.Cycle_Count 
:tip:
C  CH3_Super_Controller.End_Charge_Current CH3_Super_Controller.End_Charge_Voltage CH3_Super_Controller.Target_Voltage CH3_Super_Controller.Delta_Peak_Voltage CH3_Super_Controller.Precharge_Current  CH3_Super_Controller.Charge_Current CH3_Super_Controller.Precharge_To_Fast_Charge_Voltage 

D  CH3_Super_Controller.Discharge_Cut_Voltage CH3_Super_Controller.Discharge_Current  CH3_Super_Controller.Discharge_Reduce_Current 

Cy CH3_Super_Controller.End_Charge_Current CH3_Super_Controller.End_Charge_Voltage CH3_Super_Controller.Target_Voltage CH3_Super_Controller.Delta_Peak_Voltage CH3_Super_Controller.Cycle_Mode  CH3_Super_Controller.Cycle_Count CH3_Super_Controller.Precharge_Current  CH3_Super_Controller.Charge_Current CH3_Super_Controller.Precharge_To_Fast_Charge_Voltage CH3_Super_Controller.Discharge_Cut_Voltage CH3_Super_Controller.Discharge_Current  CH3_Super_Controller.Discharge_Reduce_Current 

;St CH3_Super_Controller.End_Charge_Current CH3_Super_Controller.Precharge_Current  CH3_Super_Controller.Charge_Current CH3_Super_Controller.Precharge_To_Fast_Charge_Voltage CH3_Super_Controller.Storage_Target_Voltage CH3_Super_Controller.Discharge_Current  CH3_Super_Controller.Discharge_Reduce_Current  

#cmdSetup separator - CH3_Super_Controller
2 100 Sunken

#cmdSetup infoAsk Status CH3_Super_Controller
:read: Status? CH3; 
:tip:Click "Get" to retrieve the real-time status of the channel 3.   

#cmdSetup separator - CH3_Super_Controller
2 100 Sunken 

#cmdSetup button Start_Process CH3_Super_Controller
:write:SUPEr:CONTrol:RUN CH3;[200]; 
:update:CH3_Super_Controller.Choose_A_Program_To_Run CH3_Super_Controller.Battery_Type CH3_Super_Controller.Task  CH3_Super_Controller.Nothing
:tip:The button start the program. 

#cmdSetup button Stop_Process CH3_Super_Controller
:write:SUPEr:CONTrol:STOP CH3;[200];
:tip:The button stop the program.

#cmdSetup separator - CH3_Super_Controller
2 100 Sunken

#cmdSetup button Start_Battery_Activation_Process CH3_Super_Controller
:write:SUPEr:CONTrol:ACTIvatebattery:STARt CH3;[200]; 
:tip:Protected cells with Low Voltage Protection triggered are generally safe.But activation is not recommended for unprotected over-discharged cells. The process lasts 2 minutes.

#cmdSetup button Exit_Battery_Activation_Process CH3_Super_Controller
:write:SUPEr:CONTrol:ACTIvatebattery:EXIT CH3;[200];
:tip:Terminate the battery activation process early. After 2 minutes, the charger will automatically end the process.

;*****************************************************************
;CH4 Super Controller
;*****************************************************************
#cmdSetup color - CH4_Super_Controller
(0,204,204)

#cmdSetup button Download_Or_Sync_Program CH4_Super_Controller
:update:CH4_Super_Controller.Choose_A_Program_To_Run CH4_Super_Controller.Battery_Type CH4_Super_Controller.Task  CH4_Super_Controller.Nothing
:tip:Download or sync the configuration of the program currently running on Channel 4. 

#cmdSetup separator - CH4_Super_Controller
2 100 Sunken

#cmdSetup combobox Choose_A_Program_To_Run CH4_Super_Controller
:write: SUPEr:PROGram:SETUp CH4,#;[200]
:read: PROGram:SERIalno? CH4 ;   
:readmath: getElement("0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,temp",listIndex(value,"0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 255"));
:update: CH4_Super_Controller.Battery_Type CH4_Super_Controller.Task  CH4_Super_Controller.Nothing CH4_Super_Controller.End_Charge_Current CH4_Super_Controller.End_Charge_Voltage CH4_Super_Controller.Target_Voltage CH4_Super_Controller.Delta_Peak_Voltage
:tip:Select a program to run. Subsequent options allow real-time adjustments to key configurations, with limited safety checks by the charger.
:string:
Program_0 0
Program_1 1
Program_2 2
Program_3 3
Program_4 4
Program_5 5
Program_6 6
Program_7 7
Program_8 8
Program_9 9
Program_10 10
Program_11 11
Program_12 12
Program_13 13
Program_14 14
Program_15 15
Program_16 16
Program_17 17
Program_18 18
Program_19 19
Program_20 20
Program_21 21
Program_22 22
Program_23 23
Program_24 24
Program_25 25
Program_26 26
Program_27 27
Program_28 28
Program_29 29
Program_30 30
Program_31 31
Temporary temp

#cmdSetup combobox Battery_Type CH4_Super_Controller
:write:SUPE:PROGram:TYPE CH4, #;[200];
:read: PROGram:TYPE?  CH4;        
:readmath: getElement("Ni,Li,LF,Li430,Li435,LD",value-1);
:update: CH4_Super_Controller.Task CH4_Super_Controller.Choose_A_Program_To_Run
:tip:Modifying this configuration is not recommended. 
:string:
NiMh/Cd Ni
LiionStd Li
LiFePO4 LF
Liion430 Li430
Liion435 Li435
Liion150 LD

#cmdSetup combobox Task CH4_Super_Controller
:write:SUPE:PROGram:TASK CH4,#; [200];
:read: PROGram:TASK?  CH4;    
:readmath: getElement("C,D,Cy,Br,Re,St",value-1);
:update:CH4_Super_Controller.Nothing CH4_Super_Controller.Choose_A_Program_To_Run 
:tip:Modifying this configuration is not recommended.
:string:
Charge C
Discharge D
Cycle Cy
Refresh Re
Storage St
:visible: inList(CH4_Super_Controller.Battery_Type,"Li LF Li430 Li435")

#cmdSetup combobox Task CH4_Super_Controller
:write:SUPE:PROGram:TASK CH4,#; [200];
:read: PROGram:TASK?  CH4;    
:readmath: getElement("C,D,Cy,Br,Re,St",value-1);
:update:CH4_Super_Controller.Nothing CH4_Super_Controller.Choose_A_Program_To_Run
:tip:Modifying this configuration is not recommended. 
:string:
Charge C
Discharge D
Cycle Cy
Break-in Br
Refresh Re
:visible: inList(CH4_Super_Controller.Battery_Type,"Ni")

#cmdSetup combobox Task CH4_Super_Controller
:write:SUPE:PROGram:TASK CH4,#; [200]; 
:read: PROGram:TASK?  CH4;    
:readmath: getElement("C,D,Cy,Br,Re,St",value-1); 
:update:CH4_Super_Controller.Nothing CH4_Super_Controller.Choose_A_Program_To_Run
:tip:Modifying this configuration is not recommended. 
:string:
Charge C
Discharge D
Cycle Cy
Refresh Re
:visible: inList(CH4_Super_Controller.Battery_Type,"LD")

#cmdSetup combobox Cycle_Mode CH4_Super_Controller
:write: SUPE:PROGram:CYCLe:MODE CH4,#; [200];  
:read: PROGram:CYCLe:MODE?  CH4;    
:readmath: getElement("CDC,DCD,DC,CD",value-1);
:update:CH4_Super_Controller.Choose_A_Program_To_Run 
:string:
C>D>C CDC
D>C>D DCD
D>C DC
C>D CD
:visible:inList(CH4_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Cycle_Count CH4_Super_Controller
:write: SUPE:PROGram:CYCLe:COUNts CH4,#; [200];  
:read: PROGram:CYCLe:COUNts?  CH4;    
:update:CH4_Super_Controller.Choose_A_Program_To_Run 
count 1 10
:visible:inList(CH4_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Precharge_To_Fast_Charge_Voltage CH4_Super_Controller
:write: SUPEr:PROGram:VOLTage:PREChargetofastcharge CH4,#V; [200];  
:read: PROGram:VOLTage:PREChargetofastcharge?  CH4;    
:readmath: (value/1000.0) 
:update:CH4_Super_Controller.Choose_A_Program_To_Run 
V 0.500 3.300
:visible:inList(CH4_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Precharge_Current CH4_Super_Controller
:write: SUPE:PROGram:CURRent:PRECharge CH4,#A; [200];  
:read: PROGram:CURRent:PRECharge?  CH4;    
:readmath: (value/1000.0)    
:update:CH4_Super_Controller.Choose_A_Program_To_Run 
A 0.030 2.000
:visible:inList(CH4_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Charge_Current CH4_Super_Controller
:write: SUPE:PROGram:CURRent:CHARge CH4,#A; [200];  
:read: PROGram:CURRent:CHARge?  CH4;
:readmath: (value/1000.0)  
:update:CH4_Super_Controller.Choose_A_Program_To_Run 
A 0.030 2.000
:visible:inList(CH4_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number End_Charge_Current CH4_Super_Controller
:write: SUPE:PROGram:CURRent:TERMination CH4,#A; [200];  
:read: PROGram:CURRent:TERMination?  CH4; 
:readmath: (value/1000.0)    
:update:CH4_Super_Controller.Choose_A_Program_To_Run 
A 0.030 2.000
:visible:inList(CH4_Super_Controller.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number End_Charge_Voltage CH4_Super_Controller
:write: SUPE:PROGram:VOLTage:TERMination CH4,#V; [200];  
:read: PROGram:VOLTage:TERMination?  CH4;    
:readmath: (value/1000.0)  
:update:CH4_Super_Controller.Choose_A_Program_To_Run 
V 0.030 4.850
:visible:inList(CH4_Super_Controller.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number Target_Voltage CH4_Super_Controller
:write: SUPEr:PROGram:VOLTage:TARGet CH4,#V; [200];  
:read: PROGram:VOLTage:TARGet?  CH4;  
:readmath: (value/1000.0) 
:update:CH4_Super_Controller.Choose_A_Program_To_Run 
V 0.900 2.000
:visible: CH4_Super_Controller.Battery_Type=="Ni" 

#cmdSetup combobox Delta_Peak_Voltage CH4_Super_Controller
:write: SUPEr:PROGram:DELTaPeak CH4,#; [200];  
:read: PROGram:DELTaPeak?  CH4;    
;:readmath: getElement("0,1,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10",value); 
:update:CH4_Super_Controller.Choose_A_Program_To_Run 
:string:
0dV 0
1_mV 1
2_mV 2
3_mV 3
4_mV 4
5_mV 5
6_mV 6
7_mV 7
8_mV 8
9_mV 9
Advice 10
:visible: CH4_Super_Controller.Battery_Type=="Ni" 

;#cmdSetup number Storage_Target_Voltage CH4_Super_Controller
;:write: SUPE:PROGram:VOLTage:TERMination CH4,#V; [50];SUPEr:PROGram:VOLTage:CUT CH4,#V; [200];    
;:read: PROGram:VOLTage:TERMination?  CH4;   
;:readmath: (value/1000.0)  
;:update:CH4_Super_Controller.Choose_A_Program_To_Run 
;V 3.0 4.200
;:visible:inList(CH4_Super_Controller.Battery_Type, "Li LF Li430 Li435")

#cmdSetup number Discharge_Current CH4_Super_Controller
:write: SUPEr:PROGram:CURRent:DISCharge CH4,#A; [200];  
:read: PROGram:CURRent:DISCharge?  CH4;  
:readmath: (value/1000.0) 
:update:CH4_Super_Controller.Choose_A_Program_To_Run 
A 0.030 1.000
:visible:inList(CH4_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Discharge_Reduce_Current CH4_Super_Controller
:write: SUPEr:PROGram:CURRent:DISCharge:REDUce CH4,#A; [200];  
:read:PROGram:CURRent:DISCharge:REDUce?  CH4;  
:readmath: (value/1000.0) 
:update:CH4_Super_Controller.Choose_A_Program_To_Run 
A 0.030 1.000
:visible:inList(CH4_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup number Discharge_Cut_Voltage CH4_Super_Controller
:write: SUPEr:PROGram:VOLTage:CUT CH4,#V; [200];  
:read: PROGram:VOLTage:CUT?  CH4;    
:readmath: (value/1000.0) 
:update:CH4_Super_Controller.Choose_A_Program_To_Run 
V 0.500 4.000
:visible:inList(CH4_Super_Controller.Battery_Type, "Ni Li LF Li430 Li435")

#cmdSetup selector Nothing CH4_Super_Controller
:read: PROGram:TASK?  CH4;
:readmath: getElement("C,D,Cy,Br,Re,St",value-1); 
:update: CH4_Super_Controller.Cycle_Mode CH4_Super_Controller.Cycle_Count 
:tip:
C  CH4_Super_Controller.End_Charge_Current CH4_Super_Controller.End_Charge_Voltage CH4_Super_Controller.Target_Voltage CH4_Super_Controller.Delta_Peak_Voltage CH4_Super_Controller.Precharge_Current  CH4_Super_Controller.Charge_Current CH4_Super_Controller.Precharge_To_Fast_Charge_Voltage 

D  CH4_Super_Controller.Discharge_Cut_Voltage CH4_Super_Controller.Discharge_Current  CH4_Super_Controller.Discharge_Reduce_Current 

Cy CH4_Super_Controller.End_Charge_Current CH4_Super_Controller.End_Charge_Voltage CH4_Super_Controller.Target_Voltage CH4_Super_Controller.Delta_Peak_Voltage CH4_Super_Controller.Cycle_Mode  CH4_Super_Controller.Cycle_Count CH4_Super_Controller.Precharge_Current  CH4_Super_Controller.Charge_Current CH4_Super_Controller.Precharge_To_Fast_Charge_Voltage CH4_Super_Controller.Discharge_Cut_Voltage CH4_Super_Controller.Discharge_Current  CH4_Super_Controller.Discharge_Reduce_Current 

;St CH4_Super_Controller.End_Charge_Current CH4_Super_Controller.Precharge_Current  CH4_Super_Controller.Charge_Current CH4_Super_Controller.Precharge_To_Fast_Charge_Voltage CH4_Super_Controller.Storage_Target_Voltage CH4_Super_Controller.Discharge_Current  CH4_Super_Controller.Discharge_Reduce_Current  

#cmdSetup separator - CH4_Super_Controller
2 100 Sunken

#cmdSetup infoAsk Status CH4_Super_Controller
:read: Status? CH4;   
:tip:Click "Get" to retrieve the real-time status of the channel 4. 

#cmdSetup separator - CH4_Super_Controller
2 100 Sunken

#cmdSetup button Start_Process CH4_Super_Controller
:write:SUPEr:CONTrol:RUN CH4;[200]; 
:update:CH4_Super_Controller.Choose_A_Program_To_Run CH4_Super_Controller.Battery_Type CH4_Super_Controller.Task  CH4_Super_Controller.Nothing
:tip:The button start the program. 

#cmdSetup button Stop_Process CH4_Super_Controller
:write:SUPEr:CONTrol:STOP CH4;[200];
:tip:The button stop the program.  

#cmdSetup separator - CH4_Super_Controller
2 100 Sunken

#cmdSetup button Start_Battery_Activation_Process CH4_Super_Controller
:write:SUPEr:CONTrol:ACTIvatebattery:STARt CH4;[200]; 
:tip:Protected cells with Low Voltage Protection triggered are generally safe.But activation is not recommended for unprotected over-discharged cells. The process lasts 2 minutes.

#cmdSetup button Exit_Battery_Activation_Process CH4_Super_Controller
:write:SUPEr:CONTrol:ACTIvatebattery:EXIT CH4;[200];
:tip:Terminate the battery activation process early. After 2 minutes, the charger will automatically end the process.

;*****************************************************************
;Other
;*****************************************************************
#otherList
    menuItem[0]="Program list.txt";
    menuItem[1]="Program details.txt";
    menuItem[2]="Generate configuration copy script.txt";
    menuItem[3]="Generate custom configuration script.txt";
    menuItem[4]="Configuration files for control script.txt";
    menuItem[5]="Control script template.txt";
    menuItem[6]="Generate custom control script.txt";

#otherText

if (name=="Program list.txt") 

    var i;
    var dateTime = date();

    popupShowProgressAsync("Downloading program list from GYRFALCON "+handle,32);
    print(";;Program list of GYRFALCON "+handle+" - "+formatDateTime("yyyyMMddHHmmss",dateTime)+"\r\n");
    print("\r\n");
    print("\r\n");
    print(";;******************************Program List*******************************\r\n");
    print("\r\n");
    for i=0 to 31 do
        popupShowProgressSetPosition(i);
        var shortName=replaceChars(deviceRead(handle,"program:ShortName? "+i),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
        var longName=replaceChars(deviceRead(handle,"program:LongName? "+i),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");

        if(i<10)
            print("Program "+i+":          ");
        else
            print("Program "+i+":        ");
        endif;
        print(shortName+"      \t");
        print(longName+"\r\n");

    endfor;
    print("\r\n");
    print(";;********************************The End**********************************\r\n");
    popupShowProgressSetPosition(100);

elseif (name=="Program details.txt")

    var i;
    var dateTime = date();
    popupShowProgressAsync("Downloading the program configuration details from GYRFALCON "+handle,32);
    print(";;Program configuration details of GYRFALCON "+handle+" - "+formatDateTime("yyyyMMddHHmmss",dateTime)     +"\r\n");
    print("\r\n");
    print("\r\n");
    for i=0 to 31 do
    popupShowProgressSetPosition(i);
    var type=getElement("NiMh/Cd,LiionStd,LiFePO4,Liion430,Liion435,Liion150",deviceRead(handle,"PROGram:TYPE? "+i)-1); 
    var task=getElement("Charge,Discharge,Cycle,Break-in,Refresh,Storage",deviceRead(handle,"PROGram:TASK? "+i)-1); 
    print(";;***************************************************************************\r\n");
    print(";;Program  "+i+"\r\n");
    print("\r\n");
    print("Battery Type:  "+type+"\r\n");
    print("Task:  "+task+"\r\n");
    if (task=="Charge") 
        if((type=="LiionStd")||(type=="LiFePO4") ||(type=="Liion430")||(type=="Liion435"))
            var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
            print("Max Capacity:  "+capacity+"\r\n");
            var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
            print("Precharge Current:  "+prechargeCurrent+"\r\n");
            var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
            print("Max Precharge Time:  "+maxPrechargeTime+"\r\n");
            var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
            print("Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
            var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
            print("Charge Current:  "+chargeCurrent+"\r\n");
            var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
            print("Max Charge Time:  "+maxChargeTime+"\r\n");
            var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
            print("End Charge Current:  "+endChargeCurrent+"\r\n");
            var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
            print("End Charge Voltage:  "+endChargeVolt+"\r\n");
            var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+i)/1000.0+"V"; 
            print("Restart Voltage:  "+restartVoltage+"\r\n");
        elseif (type=="NiMh/Cd") 
            var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
            print("Max Capacity:  "+capacity+"\r\n");
            var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
            print("Precharge Current:  "+prechargeCurrent+"\r\n");
            var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
            print("Max Precharge Time:  "+maxPrechargeTime+"\r\n");
            var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
            print("Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
            var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
            print("Charge Current:  "+chargeCurrent+"\r\n");
            var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
            print("Max Charge Time:  "+maxChargeTime+"\r\n");
            var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+i)); 
            print("Delta Peak:  "+deltaPeak+"\r\n");
            var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
            print("Target Voltage:  "+targetVolt+"\r\n");
            var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+i)/1000.0+"V"; 
            print("Restart Voltage:  "+restartVoltage+"\r\n");
        elseif (type=="Liion150")
            var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
            print("Max Capacity:  "+capacity+"\r\n");
            var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
            print("Max Charge Current:  "+maxChargeCurrent+"\r\n");
            var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
            print("Max Charge Time:  "+maxChargeTime+"\r\n");
            var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
            print("Platform Voltage:  "+platformVoltage+"\r\n");
        endif;
    elseif (task=="Discharge") 
        if (type=="Liion150")
            var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
            print("Discharge Current:  "+dischargeCurrent+"\r\n");
            var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
            print("Max Discharge Time:  "+maxDischargeTime+"\r\n");
            var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
            print("Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
        else
            var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
            print("Discharge Current:  "+dischargeCurrent+"\r\n");
            var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
            print("Max Discharge Time:  "+maxDischargeTime+"\r\n");
            var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
            print("Discharge Reduce Current:  "+dischargeReduceCurrent+"\r\n");
            var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
            print("Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
        endif;
    elseif (task=="Cycle") 
        var cycleMode=getElement("CDC,DCD,DC,CD",deviceRead(handle,"PROGram:CYCLe:MODE? "+i)-1);
        print("Cycle Mode:  "+cycleMode+"\r\n");
        var cycleCounts=deviceRead(handle,"PROGram:CYCLe:COUNts? "+i); 
        print("Cycle Counts:  "+cycleCounts+"\r\n");
        if((type=="LiionStd")||(type=="LiFePO4") ||(type=="Liion430")||(type=="Liion435"))
            var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
            print("Max Capacity:  "+capacity+"\r\n");
            var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
            print("Precharge Current:  "+prechargeCurrent+"\r\n");
            var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
            print("Max Precharge Time:  "+maxPrechargeTime+"\r\n");
            var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
            print("Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
            var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
            print("Charge Current:  "+chargeCurrent+"\r\n");
            var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
            print("Max Charge Time:  "+maxChargeTime+"\r\n");
            var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
            print("End Charge Current:  "+endChargeCurrent+"\r\n");
            var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
            print("End Charge Voltage:  "+endChargeVolt+"\r\n");
            var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
            print("Charge Resting Time:  "+chargeRestingTime+"\r\n");
            var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
            print("Discharge Current:  "+dischargeCurrent+"\r\n");
            var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
            print("Max Discharge Time:  "+maxDischargeTime+"\r\n");
            var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
            print("Discharge Reduce Current:  "+dischargeReduceCurrent+"\r\n");
            var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
            print("Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
            var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
            print("Discharge Resting Time:  "+dischargeRestingTime+"\r\n");
        elseif (type=="NiMh/Cd") 
            var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
            print("Max Capacity:  "+capacity+"\r\n");
            var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
            print("Precharge Current:  "+prechargeCurrent+"\r\n");
            var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
            print("Max Precharge Time:  "+maxPrechargeTime+"\r\n");
            var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
            print("Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
            var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
            print("Charge Current:  "+chargeCurrent+"\r\n");
            var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
            print("Max Charge Time:  "+maxChargeTime+"\r\n");
            var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
            print("Target Voltage:  "+targetVolt+"\r\n");
            var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+i)); 
            print("Delta Peak:  "+deltaPeak+"\r\n");
            var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
            print("Charge Resting Time:  "+chargeRestingTime+"\r\n");
            var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
            print("Discharge Current:  "+dischargeCurrent+"\r\n");
            var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
            print("Max Discharge Time:  "+maxDischargeTime+"\r\n");
            var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
            print("Discharge Reduce Current:  "+dischargeReduceCurrent+"\r\n");
            var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
            print("Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
            var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
            print("Discharge Resting Time:  "+dischargeRestingTime+"\r\n");
        elseif (type=="Liion150")
            var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
            print("Max Capacity:  "+capacity+"\r\n");
            var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
            print("Max Charge Current:  "+maxChargeCurrent+"\r\n");
            var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
            print("Max Charge Time:  "+maxChargeTime+"\r\n");
            var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
            print("Platform Voltage:  "+platformVoltage+"\r\n")
            var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
            print("Charge Resting Time:  "+chargeRestingTime+"\r\n");
            var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
            print("Discharge Current:  "+dischargeCurrent+"\r\n");
            var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
            print("Max Discharge Time:  "+maxDischargeTime+"\r\n");
            var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
            print("Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
            var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
            print("Discharge Resting Time:  "+dischargeRestingTime+"\r\n");
        endif;
    elseif (task=="Break-in") 
        if (type=="NiMh/Cd") 
            var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
            print("Max Capacity:  "+capacity+"\r\n");
        endif;
    elseif (task=="Refresh") 
        if((type=="LiionStd")||(type=="LiFePO4") ||(type=="Liion430")||(type=="Liion435"))
            var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
            print("Max Capacity:  "+capacity+"\r\n");
            var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
            print("Charge Current:  "+chargeCurrent+"\r\n");
            var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
            print("End Charge Current:  "+endChargeCurrent+"\r\n");
            var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
            print("End Charge Voltage:  "+endChargeVolt+"\r\n");
            var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
            print("Discharge Current:  "+dischargeCurrent+"\r\n");
            var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
            print("Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
        elseif (type=="NiMh/Cd") 
            var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
            print("Max Capacity:  "+capacity+"\r\n");
            var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
            print("Charge Current:  "+chargeCurrent+"\r\n");
            var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
            print("Target Voltage:  "+targetVolt+"\r\n");
            var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
            print("Discharge Current:  "+dischargeCurrent+"\r\n");
            var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
            print("Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
        elseif (type=="Liion150")
            var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
            print("Max Capacity:  "+capacity+"\r\n");
            var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
            print("Max Charge Current:  "+maxChargeCurrent+"\r\n");
            var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
            print("Platform Voltage:  "+platformVoltage+"\r\n");
            var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
            print("Discharge Current:  "+dischargeCurrent+"\r\n");
            var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
            print("Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
        endif;
    elseif (task=="Storage") 
        if((type=="LiionStd")||(type=="LiFePO4") ||(type=="Liion430")||(type=="Liion435"))
            var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
            print("Charge Current:  "+chargeCurrent+"\r\n");
            var storageTargetVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
            print("Storage Target Voltage:  "+storageTargetVolt+"\r\n");
            var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
            print("Discharge Current:  "+dischargeCurrent+"\r\n");
        endif;
    endif;
    var longName=replaceChars(deviceRead(handle,"program:LongName? "+i),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
    print("Program Long Name:  "+longName+"\r\n");
    var shortName=replaceChars(deviceRead(handle,"program:ShortName? "+i),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
    print("Program Short Name:  "+shortName+"\r\n");
    print("\r\n");
    endfor;
    print(";;***************************************************************************\r\n");
    popupShowProgressSetPosition(100);

elseif (name=="Generate configuration copy script.txt") 

    var first=0;
    var last=31
    var total=last-first+1
    var i;
    var dateTime = date();

    popupShowProgressAsync("Generating configuration copy script from GYRFALCON "+handle,32);

    print("#"+"scriptMenu Gyrfalcon_"+handle+"_Configuration_Copy_Script_"+formatDateTime("yyyyMMddHHmmss",dateTime)+"\r\n");
    print("\r\n");
    print("#"+"logcmds 0"+"\r\n");
    print("=var device=getDevice(\"Charger\")"+"\r\n");
    print("(device):"+"\r\n");
    print("=var channel = \"None\""+"\r\n");
    print("=var command_PreprocessBeforeSettingProgramQ =  \"CONTrol:PROGram:PREProcess?  \" + channel"+"\r\n");
    print("\r\n");
    print("=popupShowProgressAsync(\"Configuring GYRFALCON "+handle+" programs\","+total+");"+"\r\n");
    print("\r\n");
    print(";;Start\r\n");
    print("\r\n");
    print("CONTrol:PROGram:PREProcess  (channel);[200];\r\n");
    print("\r\n");
    print("#"+"if  (deviceRead(device,command_PreprocessBeforeSettingProgramQ) == \"Ready\")"+"\r\n");
    print("\r\n");

    for i=first to last do
        popupShowProgressSetPosition(i);
        print(";;***************************************************************************\r\n");

        var typeFull=getElement("NiMh/Cd,LiionStd,LiFePO4,Liion430,Liion435,Liion150",deviceRead(handle,"PROGram:TYPE? "+i)-1); 
        var taskFull=getElement("Charge,Discharge,Cycle,Break-in,Refresh,Storage",deviceRead(handle,"PROGram:TASK? "+i)-1);
        print(";;Details of program  "+i+"\r\n");
        print("\r\n");
        print(";;Battery Type:  "+typeFull+"\r\n");
        print(";;Task:  "+taskFull+"\r\n");
        if (taskFull=="Charge") 
            if((typeFull=="LiionStd")||(typeFull=="LiFePO4") ||(typeFull=="Liion430")||(typeFull=="Liion435"))
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                print(";;Precharge Current:  "+prechargeCurrent+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                print(";;Max Precharge Time:  "+maxPrechargeTime+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                print(";;Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                print(";;End Charge Current:  "+endChargeCurrent+"\r\n");
                var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print(";;End Charge Voltage:  "+endChargeVolt+"\r\n");
                var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+i)/1000.0+"V"; 
                print(";;Restart Voltage:  "+restartVoltage+"\r\n");
            elseif (typeFull=="NiMh/Cd") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                print(";;Precharge Current:  "+prechargeCurrent+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                print(";;Max Precharge Time:  "+maxPrechargeTime+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                print(";;Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+i)); 
                print(";;Delta Peak:  "+deltaPeak+"\r\n");
                var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                print(";;Target Voltage:  "+targetVolt+"\r\n");
                var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+i)/1000.0+"V"; 
                print(";;Restart Voltage:  "+restartVoltage+"\r\n");
            elseif (typeFull=="Liion150")
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print(";;Max Charge Current:  "+maxChargeCurrent+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print(";;Platform Voltage:  "+platformVoltage+"\r\n");
            endif;
        elseif (taskFull=="Discharge") 
            if (typeFull=="Liion150")
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
            else
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                print(";;Discharge Reduce Current:  "+dischargeReduceCurrent+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
            endif;
        elseif (taskFull=="Cycle") 
            var cycleMode=getElement("CDC,DCD,DC,CD",deviceRead(handle,"PROGram:CYCLe:MODE? "+i)-1);
            print(";;Cycle Mode:  "+cycleMode+"\r\n");
            var cycleCounts=deviceRead(handle,"PROGram:CYCLe:COUNts? "+i); 
            print(";;Cycle Counts:  "+cycleCounts+"\r\n");
            if((typeFull=="LiionStd")||(typeFull=="LiFePO4") ||(typeFull=="Liion430")||(typeFull=="Liion435"))
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                print(";;Precharge Current:  "+prechargeCurrent+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                print(";;Max Precharge Time:  "+maxPrechargeTime+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                print(";;Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                print(";;End Charge Current:  "+endChargeCurrent+"\r\n");
                var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print(";;End Charge Voltage:  "+endChargeVolt+"\r\n");
                var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                print(";;Charge Resting Time:  "+chargeRestingTime+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                print(";;Discharge Reduce Current:  "+dischargeReduceCurrent+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                print(";;Discharge Resting Time:  "+dischargeRestingTime+"\r\n");
            elseif (typeFull=="NiMh/Cd") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                print(";;Precharge Current:  "+prechargeCurrent+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                print(";;Max Precharge Time:  "+maxPrechargeTime+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                print(";;Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                print(";;Target Voltage:  "+targetVolt+"\r\n");
                var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+i)); 
                print(";;Delta Peak:  "+deltaPeak+"\r\n");
                var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                print(";;Charge Resting Time:  "+chargeRestingTime+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                print(";;Discharge Reduce Current:  "+dischargeReduceCurrent+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                print(";;Discharge Resting Time:  "+dischargeRestingTime+"\r\n");
            elseif (typeFull=="Liion150")
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print(";;Max Charge Current:  "+maxChargeCurrent+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print(";;Platform Voltage:  "+platformVoltage+"\r\n")
                var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                print(";;Charge Resting Time:  "+chargeRestingTime+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                print(";;Discharge Resting Time:  "+dischargeRestingTime+"\r\n");
            endif;
        elseif (taskFull=="Break-in") 
            if (typeFull=="NiMh/Cd") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
            endif;
        elseif (taskFull=="Refresh") 
            if((typeFull=="LiionStd")||(typeFull=="LiFePO4") ||(typeFull=="Liion430")||(typeFull=="Liion435"))
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                print(";;End Charge Current:  "+endChargeCurrent+"\r\n");
                var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print(";;End Charge Voltage:  "+endChargeVolt+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
            elseif (typeFull=="NiMh/Cd") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                print(";;Target Voltage:  "+targetVolt+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
            elseif (typeFull=="Liion150")
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print(";;Max Charge Current:  "+maxChargeCurrent+"\r\n");
                var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print(";;Platform Voltage:  "+platformVoltage+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
            endif;
        elseif (taskFull=="Storage") 
            if((typeFull=="LiionStd")||(typeFull=="LiFePO4") ||(typeFull=="Liion430")||(typeFull=="Liion435"))
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var storageTargetVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print(";;Storage Target Voltage:  "+storageTargetVolt+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
            endif;
        endif;
        var longName=replaceChars(deviceRead(handle,"program:LongName? "+i),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
        print(";;Program Long Name:  "+longName+"\r\n");
        var shortName=replaceChars(deviceRead(handle,"program:ShortName? "+i),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
        print(";;Program Short Name:  "+shortName+"\r\n");
        print("\r\n");

       var typeAbbr=getElement("Ni,Li,LF,Li430,Li435,LD",deviceRead(handle,"PROGram:TYPE? "+i)-1); 
       var taskAbbr=getElement("C,D,Cy,Br,Re,St",deviceRead(handle,"PROGram:TASK? "+i)-1); 
       print(";;Configuration Script of Program "+i+"\r\n");
       print("\r\n");
       print("=popupShowProgressSetPosition("+i+");"+"\r\n");
       print("\r\n");
       print("PROGram:SERIalno (channel),"+i+";[50];"+"\r\n");
       print("PROGram:TYPE (channel),"+typeAbbr+";[50];"+"\r\n");
       print("PROGram:TASK (channel),"+taskAbbr+";[50];"+"\r\n");

       if (taskAbbr=="C") 
            if((typeAbbr=="Li")||(typeAbbr=="LF") ||(typeAbbr=="Li430")||(typeAbbr=="Li435"))
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:TERMination (channel),"+endChargeCurrent+";[50];"+"\r\n");
                var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+endChargeVolt+";[50];"+"\r\n");
                var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:RESTart (channel),"+restartVoltage+";[50];"+"\r\n");
            elseif (typeAbbr=="Ni") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+i)); 
                print("PROGram:DELTaPeak (channel),"+deltaPeak+";[50];"+"\r\n");
                var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TARGet (channel),"+targetVolt+";[50];"+"\r\n");
                var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:RESTart (channel),"+restartVoltage+";[50];"+"\r\n");
            elseif (typeAbbr=="LD")
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+maxChargeCurrent+";[50];"+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+platformVoltage+";[50];"+"\r\n");
            endif;
        elseif (taskAbbr=="D") 
            if (typeAbbr=="LD")
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
            else
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge:REDUce (channel),"+dischargeReduceCurrent+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
            endif;
        elseif (taskAbbr=="Cy") 
            var cycleMode=getElement("CDC,DCD,DC,CD",deviceRead(handle,"PROGram:CYCLe:MODE? "+i)-1);
            print("PROGram:CYCLe:MODE (channel),"+cycleMode+";[50];"+"\r\n");
            var cycleCounts=deviceRead(handle,"PROGram:CYCLe:COUNts? "+i); 
            print("PROGram:CYCLe:COUNts (channel),"+cycleCounts+";[50];"+"\r\n");
            if((typeAbbr=="Li")||(typeAbbr=="LF") ||(typeAbbr=="Li430")||(typeAbbr=="Li435"))
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:TERMination (channel),"+endChargeCurrent+";[50];"+"\r\n");
                var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+endChargeVolt+";[50];"+"\r\n");
                var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                print("PROGram:TIME:RESTing:CHARge (channel),"+chargeRestingTime+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge:REDUce (channel),"+dischargeReduceCurrent+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                print("PROGram:TIME:RESTing:DISCharge (channel),"+dischargeRestingTime+";[50];"+"\r\n");
            elseif (typeAbbr=="Ni") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TARGet (channel),"+targetVolt+";[50];"+"\r\n");
                var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+i)); 
                print("PROGram:DELTaPeak (channel),"+deltaPeak+";[50];"+"\r\n");
                var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                print("PROGram:TIME:RESTing:CHARge (channel),"+chargeRestingTime+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge:REDUce (channel),"+dischargeReduceCurrent+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                print("PROGram:TIME:RESTing:DISCharge (channel),"+dischargeRestingTime+";[50];"+"\r\n");
            elseif (typeAbbr=="LD")
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+maxChargeCurrent+";[50];"+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+platformVoltage+";[50];"+"\r\n");
                var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                print("PROGram:TIME:RESTing:CHARge (channel),"+chargeRestingTime+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                print("PROGram:TIME:RESTing:DISCharge (channel),"+dischargeRestingTime+";[50];"+"\r\n");
            endif;
        elseif (taskAbbr=="Br") 
            if (typeAbbr=="Ni") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
            endif;
        elseif (taskAbbr=="Re") 
            if((typeAbbr=="Li")||(typeAbbr=="LF") ||(typeAbbr=="Li430")||(typeAbbr=="Li435"))
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:TERMination (channel),"+endChargeCurrent+";[50];"+"\r\n");
                var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+endChargeVolt+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
            elseif (typeAbbr=="Ni") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TARGet (channel),"+targetVolt+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
            elseif (typeAbbr=="LD")
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+maxChargeCurrent+";[50];"+"\r\n");
                var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+platformVoltage+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
            endif;
        elseif (taskAbbr=="St") 
           if((typeAbbr=="Li")||(typeAbbr=="LF") ||(typeAbbr=="Li430")||(typeAbbr=="Li435"))
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var storageTargetVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+storageTargetVolt+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
        endif;
    endif;

    var longName=replaceChars(deviceRead(handle,"program:LongName? "+i),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
    print("program:LongName (replaceCharsR(\""+longName+"\",\"\\x7f\\u2191\\u2193\\u29bb\\u23b2\\u2195\\u22A5\\u2126\\u250d\\u2515\"));[50];"+"\r\n");
    var shortName=replaceChars(deviceRead(handle,"program:ShortName? "+i),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
    print("program:ShortName (replaceCharsR(\""+shortName+"\",\"\\x7f\\u2191\\u2193\\u29bb\\u23b2\\u2195\\u22A5\\u2126\\u250d\\u2515\"));[50];"+"\r\n");

    print("\r\n");
    print("CONTrol:PROGram:SAVE (channel);[50];"+"\r\n")
    print("\r\n");

    endfor;

    print(";;***************************************************************************\r\n");
    print("\r\n");
    print("CONTrol:PROGram:COMPleted (channel);[50];"+"\r\n")
    print("=popupShowProgressSetPosition(100);"+"\r\n")
    print("\r\n");
    print("#"+"endif"+"\r\n");
    print("\r\n");
    print(";;Finished\r\n");
    popupShowProgressSetPosition(100);

elseif (name=="Configuration files for control script.txt") 

    var first=0;
    var last=31

    popupInit("Generate configuration files for control Script");
    popupNumberInt("First program: ","first",0,31,"Range is 0 to 31");
    popupNumberInt("Last program: ","last",0,31,"Range is 0 to 31");
    popupShow(400,200);

    var i;
    var dateTime = date();

    popupShowProgressAsync("Generate configuration files for control script usage from GYRFALCON "+handle,32);

    print(";;Configuration file for control scripts of GYRFALCON "+handle+" - "+formatDateTime("yyyyMMddHHmmss",dateTime)     +"\r\n");
    print("\r\n");
    print("\r\n");

    for i=first to last do
        popupShowProgressSetPosition(i);
        var type=getElement("Ni,Li,LF,Li430,Li435,LD",deviceRead(handle,"PROGram:TYPE? "+i)-1); 
        var task=getElement("C,D,Cy,Br,Re,St",deviceRead(handle,"PROGram:TASK? "+i)-1); 
      
      
       if (i==first)
           print(";;***********************************Start***********************************\r\n");
       else
           print(";;***************************************************************************\r\n");
       endif;
       print(";;Configuration Program "+i+" are ready for use in control scripts.\r\n");
       print("\r\n");
       print("PROGram:TYPE (channel),"+type+";[50];"+"\r\n");
       print("PROGram:TASK (channel),"+task+";[50];"+"\r\n");

       if (task=="C") 
            if((type=="Li")||(type=="LF") ||(type=="Li430")||(type=="Li435"))
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:TERMination (channel),"+endChargeCurrent+";[50];"+"\r\n");
                var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+endChargeVolt+";[50];"+"\r\n");
                var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:RESTart (channel),"+restartVoltage+";[50];"+"\r\n");
            elseif (type=="Ni") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+i)); 
                print("PROGram:DELTaPeak (channel),"+deltaPeak+";[50];"+"\r\n");
                var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TARGet (channel),"+targetVolt+";[50];"+"\r\n");
                var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:RESTart (channel),"+restartVoltage+";[50];"+"\r\n");
            elseif (type=="LD")
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+maxChargeCurrent+";[50];"+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+platformVoltage+";[50];"+"\r\n");
            endif;
        elseif (task=="D") 
            if (type=="LD")
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
            else
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge:REDUce (channel),"+dischargeReduceCurrent+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
            endif;
        elseif (task=="Cy") 
            var cycleMode=getElement("CDC,DCD,DC,CD",deviceRead(handle,"PROGram:CYCLe:MODE? "+i)-1);
            print("PROGram:CYCLe:MODE (channel),"+cycleMode+";[50];"+"\r\n");
            var cycleCounts=deviceRead(handle,"PROGram:CYCLe:COUNts? "+i); 
            print("PROGram:CYCLe:COUNts (channel),"+cycleCounts+";[50];"+"\r\n");
            if((type=="Li")||(type=="LF") ||(type=="Li430")||(type=="Li435"))
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:TERMination (channel),"+endChargeCurrent+";[50];"+"\r\n");
                var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+endChargeVolt+";[50];"+"\r\n");
                var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                print("PROGram:TIME:RESTing:CHARge (channel),"+chargeRestingTime+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge:REDUce (channel),"+dischargeReduceCurrent+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                print("PROGram:TIME:RESTing:DISCharge (channel),"+dischargeRestingTime+";[50];"+"\r\n");
            elseif (type=="Ni") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TARGet (channel),"+targetVolt+";[50];"+"\r\n");
                var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+i)); 
                print("PROGram:DELTaPeak (channel),"+deltaPeak+";[50];"+"\r\n");
                var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                print("PROGram:TIME:RESTing:CHARge (channel),"+chargeRestingTime+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge:REDUce (channel),"+dischargeReduceCurrent+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                print("PROGram:TIME:RESTing:DISCharge (channel),"+dischargeRestingTime+";[50];"+"\r\n");
            elseif (type=="LD")
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+maxChargeCurrent+";[50];"+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+platformVoltage+";[50];"+"\r\n");
                var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                print("PROGram:TIME:RESTing:CHARge (channel),"+chargeRestingTime+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                print("PROGram:TIME:RESTing:DISCharge (channel),"+dischargeRestingTime+";[50];"+"\r\n");
            endif;
        elseif (task=="Br") 
            if (type=="Ni") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
            endif;
        elseif (task=="Re") 
            if((type=="Li")||(type=="LF") ||(type=="Li430")||(type=="Li435"))
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:TERMination (channel),"+endChargeCurrent+";[50];"+"\r\n");
                var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+endChargeVolt+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
            elseif (type=="Ni") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TARGet (channel),"+targetVolt+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
            elseif (type=="LD")
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+maxChargeCurrent+";[50];"+"\r\n");
                var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+platformVoltage+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
            endif;
        elseif (task=="St") 
           if((type=="Li")||(type=="LF") ||(type=="Li430")||(type=="Li435"))
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                var storageTargetVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                print("PROGram:VOLTage:TERMination (channel),"+storageTargetVolt+";[50];"+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
        endif;
    endif;

    print("\r\n");
    print("CONTrol:PROCess:STARt (channel);[50];"+"\r\n")
    print("\r\n");

    endfor;

    print(";;*********************************Finished*********************************\r\n");
    popupShowProgressSetPosition(100);

elseif (name=="Control script template.txt") 

    var runNow="yes";
    var processCount=3;
    var channel="ch1";
    var restingTime=10;

    popupInit("Generate control script template");
    popupCombo("Channel","channel",array("Ch1","Ch2","Ch3","Ch4"));
    popupCombo("Run Now","runNow",array("Yes","No"));
    popupNumberInt("Process Counts","processCount",1,10,"Range is 1 to 10");
    popupNumberInt("Interval time(min)","restingTime",1,60,"Range is 1min to 60min");
    popupShow(400,200);

    var i;
    var dateTime = date();

    popupShowProgressAsync("Generate a control script template for "+channel+" of GYRFALCON "+handle+" "+channel,processCount);

    print("#"+"scriptMenu Gyrfalcon_"+handle+"_Control_Script_Template_"+formatDateTime("yyyyMMddHHmmss",dateTime)+"\r\n");
    print("\r\n");
    print("#"+"logcmds 0"+"\r\n");
    print("=var device=getDevice(\"Charger\")"+"\r\n");
    print("(device):"+"\r\n");

    print("=var channel="+"\""+channel+"\""+";\r\n");
    print("=var runNow="+"\""+runNow+"\""+";\r\n");
    print("=var restingTime="+restingTime+";\r\n");
    print("\r\n");

    print("=var command_TRANsferChannelControlToPCQ= \"CONTrol:TRANsferChannelControlToPC? \"+channel"+"\r\n");
    print("=var command_ProcessCompletedQ= \"STATus:CONTrol:PROCess:COMPleted? \"+channel"+"\r\n");
    print("\r\n");
    print("\r\n");
    print(";;Start\r\n");
    print("\r\n");
    print("CONTrol:TRANsferChannelControlToPC (channel),(runNow);[200];\r\n");
    print("\r\n");
    print("#"+"if  (deviceRead(device,command_TRANsferChannelControlToPCQ) == \"Transferred\")"+"\r\n");
    print("\r\n");

    for i=1 to processCount do
        popupShowProgressSetPosition(i);
        if (i==1)
            print(";;************************************Process "+i+"***********************************************\r\n");
            print("\r\n");
            print(";;The content generated by the \"Configuration File for Control Scripts\"\r\n");
            print(";;can be directly copied. Please refer to the format specified in the reference\r\n");
            print(";;documentation.\r\n");
            print("\r\n");
            print(";;- - - - - -  - - - - - - For example - - - - - -  - - - - - -\r\n");
            print(";;PROGram:TYPE (channel),Li;[50];\r\n");
            print(";;PROGram:TASK (channel),D;[50];\r\n");
            print(";;PROGram:CURRent:DISCharge (channel),1.0A;[50];\r\n");
            print(";;PROGram:TIME:CUT (channel),600min;[50];\r\n");
            print(";;PROGram:CURRent:DISCharge:REDUce (channel),0.4A;[50];\r\n");
            print(";;PROGram:VOLTage:CUT (channel),3.3V;[50];\r\n");
            print("\r\n");
            print(";;CONTrol:PROCess:STARt (channel);[50];\r\n");
            print(";;- - - - - -  - - - - - - Example end - - - - - -  - - - - - -\r\n");
            print("\r\n");
            print(";;*********************************************************************************************\r\n");
            print("\r\n");
            print("#"+"while (deviceRead(device,command_ProcessCompletedQ) != \"Completed\")"+"\r\n");
            print("=sleep(5000)"+"\r\n");
            print("#"+"endwhile"+"\r\n");
            print("\r\n");
        else
            print("CONTrol:RESTing (channel),(restingTime)min;[50];"+"\r\n");
            print("\r\n");
            print(";;************************************Process "+i+"***********************************************\r\n");
            print("\r\n");
            print(";;The content generated by the \"Configuration File for Control Scripts\"\r\n");
            print(";;can be directly copied. Please refer to the format specified in the reference\r\n");
            print(";;documentation.\r\n");
            print("\r\n");
            print(";;*********************************************************************************************\r\n");
            print("\r\n");
            print("#"+"while (deviceRead(device,command_ProcessCompletedQ) != \"Completed\")"+"\r\n");
            print("=sleep(5000)"+"\r\n");
            print("#"+"endwhile"+"\r\n");
            print("\r\n");
        endif;
    endfor;

    print("CONTrol:RELEase (channel);[50];"+"\r\n")
    print("#"+"endif"+"\r\n");
    print("\r\n");
    print(";;Finished\r\n");
    popupShowProgressSetPosition(100);

elseif (name=="Generate custom configuration script.txt") 

    var first=0;
    var last=31
    var total=last-first+1
    var dateTime = date();

    var i;
    var genCfgScriptProg;
    for i=0 to 31 do genCfgScriptProg[i]=1;endfor;

;    popupInit("Generate custom configuration script");
;    for i=0 to 31 do
;        popupCheckbox("Generate Configuration Script for Program "+i, "genCfgScriptProg["+i+"]");
;    endfor;
;    popupShow(400,100);

    popupInit("1/4 - Generate Configuration Script");
    for i=0 to 7 do
        popupCheckbox("Generate Configuration Script for Program "+i, "genCfgScriptProg["+i+"]");
    endfor;
    popupShow(400,100);

    popupInit("2/4 - Generate Configuration Script: Page 2/4");
    for i=8 to 15 do
        popupCheckbox("Generate Configuration Script for Program "+i, "genCfgScriptProg["+i+"]");
    endfor;
    popupShow(400,100);

    popupInit("3/4 - Generate Configuration Script: Page 3/4");
    for i=16 to 23 do
        popupCheckbox("Generate Configuration Script for Program "+i, "genCfgScriptProg["+i+"]");
    endfor;
    popupShow(400,100);

    popupInit("4/4 - Generate Configuration Script: Page 4/4");
    for i=24 to 31 do
        popupCheckbox("Generate Configuration Script for Program "+i, "genCfgScriptProg["+i+"]");
    endfor;
    popupShow(400,100);

    print("#"+"scriptMenu Gyrfalcon_"+handle+"_Configuration_Copy_Script_"+formatDateTime("yyyyMMddHHmmss",dateTime)+"\r\n");
    print("\r\n");
    print("#"+"logcmds 0"+"\r\n");
    print("=var device=getDevice(\"Charger\")"+"\r\n");
    print("(device):"+"\r\n");
    print("\r\n");

    print("=var deployCfgScriptOfProgTo;\r\n");
    for i=0 to 31 do
        if genCfgScriptProg[i] print("=deployCfgScriptOfProgTo["+i+"]=\""+i+"\";\r\n"); endif;
    endfor
    print("\r\n");

    print("=popupInit(\"Generate custom configuration script\");\r\n")
    for i=0 to 31 do
      if genCfgScriptProg[i] 
          print("=popupCombo(\"Deploy Configuration Script of Program "+i+" to\",\"deployCfgScriptOfProgTo["+i+"]\",array(\"Ignore\",\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\"));\r\n");
      endif;
    endfor
    print("=popupShow(400,200);\r\n")
    print("\r\n");

    print("=var channel = \"None\""+"\r\n");
    print("=var command_PreprocessBeforeSettingProgramQ =  \"CONTrol:PROGram:PREProcess?  \" + channel"+"\r\n");
    print("\r\n");
    print("=popupShowProgressAsync(\"Configuring GYRFALCON "+handle+" programs\","+total+");"+"\r\n");
    print("\r\n");
    print(";;Start\r\n");
    print("\r\n");
    print("CONTrol:PROGram:PREProcess  (channel);[200];\r\n");
    print("\r\n");
    print("#"+"if  (deviceRead(device,command_PreprocessBeforeSettingProgramQ) == \"Ready\")"+"\r\n");
    print("\r\n");

    popupShowProgressAsync("Generating custom configuration script from GYRFALCON "+handle,32);

    for i=first to last do
        popupShowProgressSetPosition(i);

        if genCfgScriptProg[i] 
            print(";;***************************************************************************\r\n");

            var typeFull=getElement("NiMh/Cd,LiionStd,LiFePO4,Liion430,Liion435,Liion150",deviceRead(handle,"PROGram:TYPE? "+i)-1); 
            var taskFull=getElement("Charge,Discharge,Cycle,Break-in,Refresh,Storage",deviceRead(handle,"PROGram:TASK? "+i)-1);
            print(";;Details of program  "+i+"\r\n");
            print("\r\n");
            print(";;Battery Type:  "+typeFull+"\r\n");
            print(";;Task:  "+taskFull+"\r\n");
            if (taskFull=="Charge") 
                if((typeFull=="LiionStd")||(typeFull=="LiFePO4") ||(typeFull=="Liion430")||(typeFull=="Liion435"))
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print(";;Max Capacity:  "+capacity+"\r\n");
                    var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                    print(";;Precharge Current:  "+prechargeCurrent+"\r\n");
                    var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                    print(";;Max Precharge Time:  "+maxPrechargeTime+"\r\n");
                    var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                    print(";;Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print(";;Charge Current:  "+chargeCurrent+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                    print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                    var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                    print(";;End Charge Current:  "+endChargeCurrent+"\r\n");
                    var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print(";;End Charge Voltage:  "+endChargeVolt+"\r\n");
                    var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+i)/1000.0+"V"; 
                    print(";;Restart Voltage:  "+restartVoltage+"\r\n");
                elseif (typeFull=="NiMh/Cd") 
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print(";;Max Capacity:  "+capacity+"\r\n");
                    var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                    print(";;Precharge Current:  "+prechargeCurrent+"\r\n");
                    var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                    print(";;Max Precharge Time:  "+maxPrechargeTime+"\r\n");
                    var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                    print(";;Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print(";;Charge Current:  "+chargeCurrent+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                    print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                    var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+i)); 
                    print(";;Delta Peak:  "+deltaPeak+"\r\n");
                    var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                    print(";;Target Voltage:  "+targetVolt+"\r\n");
                    var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+i)/1000.0+"V"; 
                    print(";;Restart Voltage:  "+restartVoltage+"\r\n");
                elseif (typeFull=="Liion150")
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                    print(";;Max Capacity:  "+capacity+"\r\n");
                    var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print(";;Max Charge Current:  "+maxChargeCurrent+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                    print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                    var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print(";;Platform Voltage:  "+platformVoltage+"\r\n");
                endif;
            elseif (taskFull=="Discharge") 
                if (typeFull=="Liion150")
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                    print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                else
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                    print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                    var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                    print(";;Discharge Reduce Current:  "+dischargeReduceCurrent+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                endif;
            elseif (taskFull=="Cycle") 
                var cycleMode=getElement("CDC,DCD,DC,CD",deviceRead(handle,"PROGram:CYCLe:MODE? "+i)-1);
                print(";;Cycle Mode:  "+cycleMode+"\r\n");
                var cycleCounts=deviceRead(handle,"PROGram:CYCLe:COUNts? "+i); 
                print(";;Cycle Counts:  "+cycleCounts+"\r\n");
                if((typeFull=="LiionStd")||(typeFull=="LiFePO4") ||(typeFull=="Liion430")||(typeFull=="Liion435"))
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print(";;Max Capacity:  "+capacity+"\r\n");
                    var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                    print(";;Precharge Current:  "+prechargeCurrent+"\r\n");
                    var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                    print(";;Max Precharge Time:  "+maxPrechargeTime+"\r\n");
                    var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                    print(";;Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print(";;Charge Current:  "+chargeCurrent+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                    print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                    var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                    print(";;End Charge Current:  "+endChargeCurrent+"\r\n");
                    var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print(";;End Charge Voltage:  "+endChargeVolt+"\r\n");
                    var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                    print(";;Charge Resting Time:  "+chargeRestingTime+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                    print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                    var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                    print(";;Discharge Reduce Current:  "+dischargeReduceCurrent+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                    var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                    print(";;Discharge Resting Time:  "+dischargeRestingTime+"\r\n");
                elseif (typeFull=="NiMh/Cd") 
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print(";;Max Capacity:  "+capacity+"\r\n");
                    var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                    print(";;Precharge Current:  "+prechargeCurrent+"\r\n");
                    var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                    print(";;Max Precharge Time:  "+maxPrechargeTime+"\r\n");
                    var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                    print(";;Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print(";;Charge Current:  "+chargeCurrent+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                    print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                    var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                    print(";;Target Voltage:  "+targetVolt+"\r\n");
                    var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+i)); 
                    print(";;Delta Peak:  "+deltaPeak+"\r\n");
                    var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                    print(";;Charge Resting Time:  "+chargeRestingTime+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                    print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                    var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                    print(";;Discharge Reduce Current:  "+dischargeReduceCurrent+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                    var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                    print(";;Discharge Resting Time:  "+dischargeRestingTime+"\r\n");
                elseif (typeFull=="Liion150")
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                    print(";;Max Capacity:  "+capacity+"\r\n");
                    var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print(";;Max Charge Current:  "+maxChargeCurrent+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                    print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                    var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print(";;Platform Voltage:  "+platformVoltage+"\r\n")
                    var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                    print(";;Charge Resting Time:  "+chargeRestingTime+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                    print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                    var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                    print(";;Discharge Resting Time:  "+dischargeRestingTime+"\r\n");
                endif;
            elseif (taskFull=="Break-in") 
                if (typeFull=="NiMh/Cd") 
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print(";;Max Capacity:  "+capacity+"\r\n");
                endif;
            elseif (taskFull=="Refresh") 
                if((typeFull=="LiionStd")||(typeFull=="LiFePO4") ||(typeFull=="Liion430")||(typeFull=="Liion435"))
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print(";;Max Capacity:  "+capacity+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print(";;Charge Current:  "+chargeCurrent+"\r\n");
                    var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                    print(";;End Charge Current:  "+endChargeCurrent+"\r\n");
                    var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print(";;End Charge Voltage:  "+endChargeVolt+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                elseif (typeFull=="NiMh/Cd") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print(";;Max Capacity:  "+capacity+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print(";;Charge Current:  "+chargeCurrent+"\r\n");
                    var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                    print(";;Target Voltage:  "+targetVolt+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                elseif (typeFull=="Liion150")
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                    print(";;Max Capacity:  "+capacity+"\r\n");
                    var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print(";;Max Charge Current:  "+maxChargeCurrent+"\r\n");
                    var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print(";;Platform Voltage:  "+platformVoltage+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                endif;
            elseif (taskFull=="Storage") 
                if((typeFull=="LiionStd")||(typeFull=="LiFePO4") ||(typeFull=="Liion430")||(typeFull=="Liion435"))
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print(";;Charge Current:  "+chargeCurrent+"\r\n");
                    var storageTargetVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print(";;Storage Target Voltage:  "+storageTargetVolt+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                endif;
            endif;
            var longName=replaceChars(deviceRead(handle,"program:LongName? "+i),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
            print(";;Program Long Name:  "+longName+"\r\n");
            var shortName=replaceChars(deviceRead(handle,"program:ShortName? "+i),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
            print(";;Program Short Name:  "+shortName+"\r\n");
            print("\r\n");

           var typeAbbr=getElement("Ni,Li,LF,Li430,Li435,LD",deviceRead(handle,"PROGram:TYPE? "+i)-1); 
           var taskAbbr=getElement("C,D,Cy,Br,Re,St",deviceRead(handle,"PROGram:TASK? "+i)-1); 
           print(";;Configuration Script of Program\r\n");
           print("\r\n");
           print("=popupShowProgressSetPosition("+i+");"+"\r\n");
           print("\r\n");
           print("PROGram:SERIalno (channel),(deployCfgScriptOfProgTo["+i+"]);[50];\r\n");
           print("PROGram:TYPE (channel),"+typeAbbr+";[50];"+"\r\n");
           print("PROGram:TASK (channel),"+taskAbbr+";[50];"+"\r\n");

           if (taskAbbr=="C") 
                if((typeAbbr=="Li")||(typeAbbr=="LF") ||(typeAbbr=="Li430")||(typeAbbr=="Li435"))
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                    var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                    print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                    var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                    print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                    var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:TERMination (channel),"+endChargeCurrent+";[50];"+"\r\n");
                    var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+endChargeVolt+";[50];"+"\r\n");
                    var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:RESTart (channel),"+restartVoltage+";[50];"+"\r\n");
                elseif (typeAbbr=="Ni") 
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                    var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                    print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                    var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                    print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                    var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+i)); 
                    print("PROGram:DELTaPeak (channel),"+deltaPeak+";[50];"+"\r\n");
                    var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:TARGet (channel),"+targetVolt+";[50];"+"\r\n");
                    var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:RESTart (channel),"+restartVoltage+";[50];"+"\r\n");
                elseif (typeAbbr=="LD")
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+maxChargeCurrent+";[50];"+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                    print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                    var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+platformVoltage+";[50];"+"\r\n");
                endif;
            elseif (taskAbbr=="D") 
                if (typeAbbr=="LD")
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                    print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                else
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                    print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                    var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge:REDUce (channel),"+dischargeReduceCurrent+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                endif;
            elseif (taskAbbr=="Cy") 
                var cycleMode=getElement("CDC,DCD,DC,CD",deviceRead(handle,"PROGram:CYCLe:MODE? "+i)-1);
                print("PROGram:CYCLe:MODE (channel),"+cycleMode+";[50];"+"\r\n");
                var cycleCounts=deviceRead(handle,"PROGram:CYCLe:COUNts? "+i); 
                print("PROGram:CYCLe:COUNts (channel),"+cycleCounts+";[50];"+"\r\n");
                if((typeAbbr=="Li")||(typeAbbr=="LF") ||(typeAbbr=="Li430")||(typeAbbr=="Li435"))
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                    var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                    print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                    var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                    print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                    var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:TERMination (channel),"+endChargeCurrent+";[50];"+"\r\n");
                    var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+endChargeVolt+";[50];"+"\r\n");
                    var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                    print("PROGram:TIME:RESTing:CHARge (channel),"+chargeRestingTime+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                    print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                    var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge:REDUce (channel),"+dischargeReduceCurrent+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                    var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                    print("PROGram:TIME:RESTing:DISCharge (channel),"+dischargeRestingTime+";[50];"+"\r\n");
                elseif (typeAbbr=="Ni") 
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                    var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+i)+"min"; 
                    print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                    var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                    print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                    var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:TARGet (channel),"+targetVolt+";[50];"+"\r\n");
                    var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+i)); 
                    print("PROGram:DELTaPeak (channel),"+deltaPeak+";[50];"+"\r\n");
                    var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                    print("PROGram:TIME:RESTing:CHARge (channel),"+chargeRestingTime+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                    print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                    var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge:REDUce (channel),"+dischargeReduceCurrent+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                    var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                    print("PROGram:TIME:RESTing:DISCharge (channel),"+dischargeRestingTime+";[50];"+"\r\n");
                elseif (typeAbbr=="LD")
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+maxChargeCurrent+";[50];"+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+i)+"min"; 
                    print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                    var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+platformVoltage+";[50];"+"\r\n");
                    var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+i)+"min"; 
                    print("PROGram:TIME:RESTing:CHARge (channel),"+chargeRestingTime+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+i)+"min"; 
                    print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                    var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+i)+"min"; 
                    print("PROGram:TIME:RESTing:DISCharge (channel),"+dischargeRestingTime+";[50];"+"\r\n");
                endif;
            elseif (taskAbbr=="Br") 
                if (typeAbbr=="Ni") 
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                endif;
            elseif (taskAbbr=="Re") 
                if((typeAbbr=="Li")||(typeAbbr=="LF") ||(typeAbbr=="Li430")||(typeAbbr=="Li435"))
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:TERMination (channel),"+endChargeCurrent+";[50];"+"\r\n");
                    var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+endChargeVolt+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                elseif (typeAbbr=="Ni") 
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:TARGet (channel),"+targetVolt+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                elseif (typeAbbr=="LD")
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+i)+"mWh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+maxChargeCurrent+";[50];"+"\r\n");
                    var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+platformVoltage+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                endif;
            elseif (taskAbbr=="St") 
               if((typeAbbr=="Li")||(typeAbbr=="LF") ||(typeAbbr=="Li430")||(typeAbbr=="Li435"))
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var storageTargetVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+i)/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+storageTargetVolt+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+i)/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
            endif;
        endif;

        var longName=replaceChars(deviceRead(handle,"program:LongName? "+i),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
        print("program:LongName (replaceCharsR(\""+longName+"\",\"\\x7f\\u2191\\u2193\\u29bb\\u23b2\\u2195\\u22A5\\u2126\\u250d\\u2515\"));[50];"+"\r\n");
        var shortName=replaceChars(deviceRead(handle,"program:ShortName? "+i),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
        print("program:ShortName (replaceCharsR(\""+shortName+"\",\"\\x7f\\u2191\\u2193\\u29bb\\u23b2\\u2195\\u22A5\\u2126\\u250d\\u2515\"));[50];"+"\r\n");

        print("\r\n");
        print("CONTrol:PROGram:SAVE (channel);[50];"+"\r\n")
        print("\r\n");

        endif;
    endfor;

    print(";;***************************************************************************\r\n");
    print("\r\n");
    print("CONTrol:PROGram:COMPleted (channel);[50];"+"\r\n")
    print("=popupShowProgressSetPosition(100);"+"\r\n")
    print("\r\n");
    print("#"+"endif"+"\r\n");
    print("\r\n");
    print(";;Finished\r\n");
    popupShowProgressSetPosition(100);

elseif (name=="Generate custom control script.txt") 

    var runNow="Yes";
    var processCount=3;
    var channel="ch1";
    var restingTime=10;
    var compactCommand="Yes";

    popupInit("Control Script Parameters");
    popupCombo("Channel","channel",array("Ch1","Ch2","Ch3","Ch4"));
    popupCombo("Run Now","runNow",array("Yes","No"));
    popupCombo("Compact Command","compactCommand",array("Yes","No"));
    popupNumberInt("Process Counts","processCount",1,10,"Range is 1 to 10");
    popupNumberInt("Interval time(min)","restingTime",1,60,"Range is 1min to 60min");
    popupShow(400,200);

    var i;
    var dateTime = date();

    var programForProcess;
    for i=1 to processCount do
        programForProcess[i]=i;
    endfor

    popupInit("Generate custom configuration script");
    for i=1 to processCount do
        popupCombo("Select Program for Process "+i,"programForProcess["+i+"]",array("0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"));
    endfor
    popupShow(400,200);

;;    print("=var programForProcess;\r\n");
;;    for i=1 to processCount do
;;        print("=programForProcess["+i+"]=\""+programForProcess[i]+"\";\r\n"); 
;;   endfor
;;    print("\r\n");

    print("#"+"scriptMenu Gyrfalcon_"+handle+"_Custom_Control_Script_"+formatDateTime("yyyyMMddHHmmss",dateTime)+"\r\n");
    print("\r\n");
    print("#"+"logcmds 0"+"\r\n");
    print("=var device=getDevice(\"Charger\")"+"\r\n");
    print("(device):"+"\r\n");

    print("=var channel="+"\""+channel+"\""+";\r\n");
    print("=var runNow="+"\""+runNow+"\""+";\r\n");
    print("=var restingTime="+restingTime+";\r\n");
    print("\r\n");

    print("=var command_TRANsferChannelControlToPCQ= \"CONTrol:TRANsferChannelControlToPC? \"+channel"+"\r\n");
    print("=var command_ProcessCompletedQ= \"STATus:CONTrol:PROCess:COMPleted? \"+channel"+"\r\n");
    print("\r\n");
    print("\r\n");
    print(";;Start\r\n");
    print("\r\n");
    print("CONTrol:TRANsferChannelControlToPC (channel),(runNow);[200];\r\n");
    print("\r\n");
    print("#"+"if  (deviceRead(device,command_TRANsferChannelControlToPCQ) == \"Transferred\")"+"\r\n");
    print("\r\n");

    popupShowProgressAsync("Generate a control script template for "+channel+" of GYRFALCON "+handle+" "+channel,processCount);

    for i=1 to processCount do
        popupShowProgressSetPosition(i);
        print(";;************************************Process "+i+"***********************************************\r\n");
        print("\r\n");

        var typeFull=getElement("NiMh/Cd,LiionStd,LiFePO4,Liion430,Liion435,Liion150",deviceRead(handle,"PROGram:TYPE? "+programForProcess[i])-1); 
        var taskFull=getElement("Charge,Discharge,Cycle,Break-in,Refresh,Storage",deviceRead(handle,"PROGram:TASK? "+programForProcess[i])-1);
        print(";;Details of program  "+programForProcess[i]+"\r\n");
        print("\r\n");
        print(";;Battery Type:  "+typeFull+"\r\n");
        print(";;Task:  "+taskFull+"\r\n");
        if (taskFull=="Charge") 
            if((typeFull=="LiionStd")||(typeFull=="LiFePO4") ||(typeFull=="Liion430")||(typeFull=="Liion435"))
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Precharge Current:  "+prechargeCurrent+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+programForProcess[i])+"min"; 
                print(";;Max Precharge Time:  "+maxPrechargeTime+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+programForProcess[i])/1000.0+"V"; 
                print(";;Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+programForProcess[i])+"min"; 
                print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+programForProcess[i])/1000.0+"A"; 
                print(";;End Charge Current:  "+endChargeCurrent+"\r\n");
                var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                print(";;End Charge Voltage:  "+endChargeVolt+"\r\n");
                var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+programForProcess[i])/1000.0+"V"; 
                print(";;Restart Voltage:  "+restartVoltage+"\r\n");
            elseif (typeFull=="NiMh/Cd") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Precharge Current:  "+prechargeCurrent+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+programForProcess[i])+"min"; 
                print(";;Max Precharge Time:  "+maxPrechargeTime+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+programForProcess[i])/1000.0+"V"; 
                print(";;Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+programForProcess[i])+"min"; 
                print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+programForProcess[i])); 
                print(";;Delta Peak:  "+deltaPeak+"\r\n");
                var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+programForProcess[i])/1000.0+"V"; 
                print(";;Target Voltage:  "+targetVolt+"\r\n");
                var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+programForProcess[i])/1000.0+"V"; 
                print(";;Restart Voltage:  "+restartVoltage+"\r\n");
            elseif (typeFull=="Liion150")
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mWh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Max Charge Current:  "+maxChargeCurrent+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+programForProcess[i])+"min"; 
                print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                print(";;Platform Voltage:  "+platformVoltage+"\r\n");
            endif;
        elseif (taskFull=="Discharge") 
            if (typeFull=="Liion150")
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+programForProcess[i])+"min"; 
                print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
            else
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+programForProcess[i])+"min"; 
                print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+programForProcess[i])/1000.0+"A"; 
                print(";;Discharge Reduce Current:  "+dischargeReduceCurrent+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
            endif;
        elseif (taskFull=="Cycle") 
            var cycleMode=getElement("CDC,DCD,DC,CD",deviceRead(handle,"PROGram:CYCLe:MODE? "+programForProcess[i])-1);
            print(";;Cycle Mode:  "+cycleMode+"\r\n");
            var cycleCounts=deviceRead(handle,"PROGram:CYCLe:COUNts? "+programForProcess[i]); 
            print(";;Cycle Counts:  "+cycleCounts+"\r\n");
            if((typeFull=="LiionStd")||(typeFull=="LiFePO4") ||(typeFull=="Liion430")||(typeFull=="Liion435"))
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Precharge Current:  "+prechargeCurrent+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+programForProcess[i])+"min"; 
                print(";;Max Precharge Time:  "+maxPrechargeTime+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+programForProcess[i])/1000.0+"V"; 
                print(";;Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+programForProcess[i])+"min"; 
                print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+programForProcess[i])/1000.0+"A"; 
                print(";;End Charge Current:  "+endChargeCurrent+"\r\n");
                var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                print(";;End Charge Voltage:  "+endChargeVolt+"\r\n");
                var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+programForProcess[i])+"min"; 
                print(";;Charge Resting Time:  "+chargeRestingTime+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+programForProcess[i])+"min"; 
                print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+programForProcess[i])/1000.0+"A"; 
                print(";;Discharge Reduce Current:  "+dischargeReduceCurrent+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+programForProcess[i])+"min"; 
                print(";;Discharge Resting Time:  "+dischargeRestingTime+"\r\n");
            elseif (typeFull=="NiMh/Cd") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Precharge Current:  "+prechargeCurrent+"\r\n");
                var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+programForProcess[i])+"min"; 
                print(";;Max Precharge Time:  "+maxPrechargeTime+"\r\n");
                var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+programForProcess[i])/1000.0+"V"; 
                print(";;Precharge To Fast Charge Voltage:  "+prechargeToFastChargeVolt+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+programForProcess[i])+"min"; 
                print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+programForProcess[i])/1000.0+"V"; 
                print(";;Target Voltage:  "+targetVolt+"\r\n");
                var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+programForProcess[i])); 
                print(";;Delta Peak:  "+deltaPeak+"\r\n");
                var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+programForProcess[i])+"min"; 
                print(";;Charge Resting Time:  "+chargeRestingTime+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+programForProcess[i])+"min"; 
                print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+programForProcess[i])/1000.0+"A"; 
                print(";;Discharge Reduce Current:  "+dischargeReduceCurrent+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+programForProcess[i])+"min"; 
                print(";;Discharge Resting Time:  "+dischargeRestingTime+"\r\n");
            elseif (typeFull=="Liion150")
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mWh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Max Charge Current:  "+maxChargeCurrent+"\r\n");
                var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+programForProcess[i])+"min"; 
                print(";;Max Charge Time:  "+maxChargeTime+"\r\n");
                var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                print(";;Platform Voltage:  "+platformVoltage+"\r\n")
                var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+programForProcess[i])+"min"; 
                print(";;Charge Resting Time:  "+chargeRestingTime+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+programForProcess[i])+"min"; 
                print(";;Max Discharge Time:  "+maxDischargeTime+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
                var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+programForProcess[i])+"min"; 
                print(";;Discharge Resting Time:  "+dischargeRestingTime+"\r\n");
            endif;
        elseif (taskFull=="Break-in") 
            if (typeFull=="NiMh/Cd") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
            endif;
        elseif (taskFull=="Refresh") 
            if((typeFull=="LiionStd")||(typeFull=="LiFePO4") ||(typeFull=="Liion430")||(typeFull=="Liion435"))
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+programForProcess[i])/1000.0+"A"; 
                print(";;End Charge Current:  "+endChargeCurrent+"\r\n");
                var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                print(";;End Charge Voltage:  "+endChargeVolt+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
            elseif (typeFull=="NiMh/Cd") 
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+programForProcess[i])/1000.0+"V"; 
                print(";;Target Voltage:  "+targetVolt+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
            elseif (typeFull=="Liion150")
                var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mWh"; 
                print(";;Max Capacity:  "+capacity+"\r\n");
                var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Max Charge Current:  "+maxChargeCurrent+"\r\n");
                var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                print(";;Platform Voltage:  "+platformVoltage+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
                var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                print(";;Discharge Cut Voltage:  "+dischargeCutVoltage+"\r\n");
            endif;
        elseif (taskFull=="Storage") 
            if((typeFull=="LiionStd")||(typeFull=="LiFePO4") ||(typeFull=="Liion430")||(typeFull=="Liion435"))
                var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Charge Current:  "+chargeCurrent+"\r\n");
                var storageTargetVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                print(";;Storage Target Voltage:  "+storageTargetVolt+"\r\n");
                var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                print(";;Discharge Current:  "+dischargeCurrent+"\r\n");
            endif;
        endif;
        var longName=replaceChars(deviceRead(handle,"program:LongName? "+programForProcess[i]),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
        print(";;Program Long Name:  "+longName+"\r\n");
        var shortName=replaceChars(deviceRead(handle,"program:ShortName? "+programForProcess[i]),"\x7f\u2191\u2193\u29bb\u23b2\u2195\u22A5\u2126\u250d\u2515");
        print(";;Program Short Name:  "+shortName+"\r\n");
        print("\r\n");


        if (compactCommand=="No")
            var typeAbbr=getElement("Ni,Li,LF,Li430,Li435,LD",deviceRead(handle,"PROGram:TYPE? "+programForProcess[i])-1); 
            var taskAbbr=getElement("C,D,Cy,Br,Re,St",deviceRead(handle,"PROGram:TASK? "+programForProcess[i])-1); 
            print(";;Configuration Program "+programForProcess[i]+" are ready for use in control scripts.\r\n");
            print("\r\n");
            print("PROGram:TYPE (channel),"+typeAbbr+";[50];"+"\r\n");
            print("PROGram:TASK (channel),"+taskAbbr+";[50];"+"\r\n");

            if (taskAbbr=="C") 
                if((typeAbbr=="Li")||(typeAbbr=="LF") ||(typeAbbr=="Li430")||(typeAbbr=="Li435"))
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                    var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                    var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                    var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:TERMination (channel),"+endChargeCurrent+";[50];"+"\r\n");
                    var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+endChargeVolt+";[50];"+"\r\n");
                    var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:RESTart (channel),"+restartVoltage+";[50];"+"\r\n");
                elseif (typeAbbr=="Ni") 
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                    var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                    var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                    var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+programForProcess[i])); 
                    print("PROGram:DELTaPeak (channel),"+deltaPeak+";[50];"+"\r\n");
                    var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:TARGet (channel),"+targetVolt+";[50];"+"\r\n");
                    var restartVoltage=deviceRead(handle,"PROGram:VOLTage:RESTart? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:RESTart (channel),"+restartVoltage+";[50];"+"\r\n");
                elseif (typeAbbr=="LD")
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mWh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+maxChargeCurrent+";[50];"+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                    var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+platformVoltage+";[50];"+"\r\n");
                endif;
            elseif (taskAbbr=="D") 
                if (typeAbbr=="LD")
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                else
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                    var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge:REDUce (channel),"+dischargeReduceCurrent+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                endif;
            elseif (taskAbbr=="Cy") 
                var cycleMode=getElement("CDC,DCD,DC,CD",deviceRead(handle,"PROGram:CYCLe:MODE? "+programForProcess[i])-1);
                print("PROGram:CYCLe:MODE (channel),"+cycleMode+";[50];"+"\r\n");
                var cycleCounts=deviceRead(handle,"PROGram:CYCLe:COUNts? "+programForProcess[i]); 
                print("PROGram:CYCLe:COUNts (channel),"+cycleCounts+";[50];"+"\r\n");
                if((typeAbbr=="Li")||(typeAbbr=="LF") ||(typeAbbr=="Li430")||(typeAbbr=="Li435"))
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                    var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                    var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                    var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:TERMination (channel),"+endChargeCurrent+";[50];"+"\r\n");
                    var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+endChargeVolt+";[50];"+"\r\n");
                    var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:RESTing:CHARge (channel),"+chargeRestingTime+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                    var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge:REDUce (channel),"+dischargeReduceCurrent+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                    var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:RESTing:DISCharge (channel),"+dischargeRestingTime+";[50];"+"\r\n");
                elseif (typeAbbr=="Ni") 
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var prechargeCurrent=deviceRead(handle,"PROGram:CURRent:PRECharge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:PRECharge (channel),"+prechargeCurrent+";[50];"+"\r\n");
                    var maxPrechargeTime=deviceRead(handle,"PROGram:TIME:PRECharge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:PRECharge (channel),"+maxPrechargeTime+";[50];"+"\r\n");
                    var prechargeToFastChargeVolt=deviceRead(handle,"PROGram:VOLTage:PREChargetofastcharge? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:PREChargetofastcharge (channel),"+prechargeToFastChargeVolt+";[50];"+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                    var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:TARGet (channel),"+targetVolt+";[50];"+"\r\n");
                    var deltaPeak=getElement("0mV,1mV,2mV,3mV,4mV,5mV,6mV,7mV,8mV,9mV,Advice",deviceRead(handle,"PROGram:DELTaPeak? "+programForProcess[i])); 
                    print("PROGram:DELTaPeak (channel),"+deltaPeak+";[50];"+"\r\n");
                    var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:RESTing:CHARge (channel),"+chargeRestingTime+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                    var dischargeReduceCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge:REDUce? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge:REDUce (channel),"+dischargeReduceCurrent+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                    var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:RESTing:DISCharge (channel),"+dischargeRestingTime+";[50];"+"\r\n");
                elseif (typeAbbr=="LD")
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mWh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+maxChargeCurrent+";[50];"+"\r\n");
                    var maxChargeTime=deviceRead(handle,"PROGram:TIME:CHARge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:CHARge (channel),"+maxChargeTime+";[50];"+"\r\n");
                    var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+platformVoltage+";[50];"+"\r\n");
                    var chargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:CHARge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:RESTing:CHARge (channel),"+chargeRestingTime+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var maxDischargeTime=deviceRead(handle,"PROGram:TIME:CUT? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:CUT (channel),"+maxDischargeTime+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                    var dischargeRestingTime=deviceRead(handle,"PROGram:TIME:RESTing:DISCharge? "+programForProcess[i])+"min"; 
                    print("PROGram:TIME:RESTing:DISCharge (channel),"+dischargeRestingTime+";[50];"+"\r\n");
                endif;
            elseif (taskAbbr=="Br") 
                if (typeAbbr=="Ni") 
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                endif;
            elseif (taskAbbr=="Re") 
                if((typeAbbr=="Li")||(typeAbbr=="LF") ||(typeAbbr=="Li430")||(typeAbbr=="Li435"))
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var endChargeCurrent=deviceRead(handle,"PROGram:CURRent:TERMination? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:TERMination (channel),"+endChargeCurrent+";[50];"+"\r\n");
                    var endChargeVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+endChargeVolt+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                elseif (typeAbbr=="Ni") 
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mAh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var targetVolt=deviceRead(handle,"PROGram:VOLTage:TARGet? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:TARGet (channel),"+targetVolt+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                elseif (typeAbbr=="LD")
                    var capacity=deviceRead(handle,"PROGram:CAPAcity? "+programForProcess[i])+"mWh"; 
                    print("PROGram:CAPAcity (channel),"+capacity+";[50];"+"\r\n");
                    var maxChargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+maxChargeCurrent+";[50];"+"\r\n");
                    var platformVoltage=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+platformVoltage+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                    var dischargeCutVoltage=deviceRead(handle,"PROGram:VOLTage:CUT? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:CUT (channel),"+dischargeCutVoltage+";[50];"+"\r\n");
                endif;
            elseif (taskAbbr=="St") 
                if((typeAbbr=="Li")||(typeAbbr=="LF") ||(typeAbbr=="Li430")||(typeAbbr=="Li435"))
                    var chargeCurrent=deviceRead(handle,"PROGram:CURRent:CHARge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:CHARge (channel),"+chargeCurrent+";[50];"+"\r\n");
                    var storageTargetVolt=deviceRead(handle,"PROGram:VOLTage:TERMination? "+programForProcess[i])/1000.0+"V"; 
                    print("PROGram:VOLTage:TERMination (channel),"+storageTargetVolt+";[50];"+"\r\n");
                    var dischargeCurrent=deviceRead(handle,"PROGram:CURRent:DISCharge? "+programForProcess[i])/1000.0+"A"; 
                    print("PROGram:CURRent:DISCharge (channel),"+dischargeCurrent+";[50];"+"\r\n");
                endif;
            endif;
        else
            print("CONTrol:PROGram:RUNNing (channel),"+programForProcess[i]+";[50];"+"\r\n")
        endif;
        print("CONTrol:PROCess:STARt (channel);[50];"+"\r\n")
        print("\r\n");
        if (i<processCount)
            print(";;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n");
            print("\r\n");
            print("#"+"while (deviceRead(device,command_ProcessCompletedQ) != \"Completed\")"+"\r\n");
            print("=sleep(5000)"+"\r\n");
            print("#"+"endwhile"+"\r\n");
            print("\r\n");
            print("CONTrol:RESTing (channel),(restingTime)min;[50];"+"\r\n");
            print("\r\n");
        endif;
    endfor;
    print(";;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n");
    print("\r\n");
    print("#"+"while (deviceRead(device,command_ProcessCompletedQ) != \"Completed\")"+"\r\n");
    print("=sleep(5000)"+"\r\n");
    print("#"+"endwhile"+"\r\n");
    print("\r\n");
    print("CONTrol:RELEase (channel);[50];"+"\r\n")
    print("#"+"endif"+"\r\n");
    print("\r\n");
    print(";;*************************************Finished*************************************************\r\n");
    popupShowProgressSetPosition(100);

endif;